Как заблокировать долго работающую Java-программу внутри Intellij - PullRequest
0 голосов
/ 30 октября 2018

Я упустил мысль о состоянии остановки цикла, и поэтому программа не прекращала поднимать ЦП до его пределов.

Весь процесс Intellij зависает и полностью перестает отвечать, зная, что моя машина использует i7, и я работаю в Ubuntu, которая обычно работает в многозадачном режиме, как любая современная ОС. Я представляю решение, такое как приостановка программы, если она продолжает выполняться без изменения состояния, после временного порога или просто, когда состояние памяти застаивается (можно подумать о многих идеях).

Существует ли устоявшееся решение для программирования, позволяющее оставаться в безопасности от одной из этих ситуаций (при тестировании я знаю, что бесконечная программа может быть полезной), но в случае бесконечного выполнения основных операций ЦП это не так.

Помогает ли работа внутри другого потока расходовать ресурсы ЦП на диспетчеризацию?

Есть ли в Intellij способ избежать такой ситуации?

        int rect_a = 100;
        int rect_b = 50;

        for (int j=1; j<rect_a; j++) {
            for (int i=0; i<j; i++) {
                //some computation
                j = method() that returns 0 alwayse. (bad logic)
            }
        }

1 Ответ

0 голосов
/ 30 октября 2018

Когда ваш код сброшен j в zero, код никогда не закончится

рассмотреть

int rect_a = 100;

for (int j=1; j<rect_a; j++) {
    for (int i=0; i<j; i++) {
        j = 0;
    }
}

System.out.println("ended");

ended никогда не печатается. Компьютер делает только то, что вы говорите

...