Согласно MSC01-J
Бесконечный цикл - это цикл, который никогда не закончится во время работы программы, т. Е. Вы должны убить программу, чтобы выйти из цикла. Является ли это выполнением конечного условия цикла или разрывом, каждый цикл должен иметь конечное условие.
Этот критерий используется SonarQube для обнаружения некоторых подозрительных точек (например, неприятный запах), которые могут вызвать и повлиять на приложение в аспектах безопасности.
Таким образом, рекомендуется использовать ends-loop
или цикл, который имеет логическое условие, чтобы разорвать его.
Используя управляемый цикл while с условием isSuccess
, как показано ниже, сколько времени тратится на метод run()
ниже?
@Override
public void run() throws InterrupException{
int i = 0;
int k = 3000 /*k is 3 seconds*/
boolean isSuccess = true;
while( isSuccess ){
i++;
isSuccess = i < Integer.MAX_VALUE;
Thread.sleep( k );
doSomething();
}
}
Эта проблема связана с T (n) для Integer.MAX_VALUE , где n = Integer.MAX_VALUE ?
Сколько времени мы можем обеспечить до остановки потока run () в днях, месяцах или годах? Рассмотрим для этого случая постоянную времени процессора и аппаратного обеспечения (отредактировано)
Любой ответ очень ценится!