Сколько времени затрачивается на вычисления для ограниченных циклов while с использованием ограничения условий конца MSC01-J (SonarQube) - PullRequest
1 голос
/ 19 июня 2019

Согласно 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 () в днях, месяцах или годах? Рассмотрим для этого случая постоянную времени процессора и аппаратного обеспечения (отредактировано)

Любой ответ очень ценится!

1 Ответ

0 голосов
/ 20 июня 2019

После комментариев я мог бы предложить вам следующий обходной путь:

 private Boolean isSuccess = true; 

 @Override
    public void run() throws InterrupException{
        int i = 0;
        int k = 3000 /*k is 3 seconds*/

        while( isSuccess ){
            i++;
            Thread.sleep( k );

            doSomething();

       }
    }

Таким образом, вы должны разрешить предупреждение, потому что у вас есть управляемое условие в объекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...