2013-05-02 3 views
1

Мне было интересно, была ли плохая практика кодирования и/или некоторые последствия, если я делаю бесконечный цикл (я проверяю, запущена ли программа) и когда условие Im check становится истинным, я использую system.exit.Бесконечная петля и System.exit (0) в java

+0

Где вы используете бесконечный цикл? С какой целью вы это используете? Дайте конкретный фрагмент кода. –

+0

Звучит неплохо. Любые примеры кода? – xagyg

ответ

2

Вы можете быть лучше использовать классы java.util.Timer и java.util.TimerTask, и рекурсивно перезапуске таймер по мере его истечения. Как сказано выше, в использовании System.exit нет ничего неправильного.

public static void main(String[] args){ 
    Timer timer = new Timer(); //create a new timer 
    timer.schedule(new TaskLoop(), 1000); //schedule the task for 1000ms (1 sec) 
} 
class TaskLoop extends TimerTask { 
    public void run() { 
     System.out.println("here"); //timer's up, do whatever you need to do 
     Timer timer = new Timer(); 
     timer.schedule(new TaskLoop(), 1000); //start another timer. 
    } 
} 
+0

Прохладный, я не знал о таймере. Это определенно лучше, чем бесконечный цикл. – problemo

9

Активный цикл ожидания, как правило, ужасная идея. Это замедляет работу всей машины (включая запуск другой программы). Найдите способ прослушать событие запуска программы. Без каких-либо подробностей вашего кода я не могу предоставить более конкретные предложения.

С вызовом System.exit(0) ничего не происходит. все зависит от того, какая программа она есть. (Например, приложение Свинг нужно просто установить DISPOSE_ON_CLOSE или EXIT_ON_CLOSE для JFrame приложения, а затем закрыть рамку.)

+0

Не волнуйтесь, я поставил 100 миллисекундный сон на нитку, чтобы не убить процессор. Я хотел бы послушать событие запуска программы. Можете ли вы поделиться ссылкой или образцом кода прослушивателя событий запуска? – problemo

+0

@ UniversalCreator1 - Это зависит от того, можете ли вы заставить другую программу сотрудничать. Если вы также пишете другую программу, есть различные способы, чтобы она сигнализировала программе мониторинга, что она началась. –

+0

Я не могу контролировать внешнюю программу, которая сделала бы ее простой! Я подумал, что когда вы сказали о событии запуска программы, окна уведомляли java о запущенной программе, которая, в свою очередь, вызывала бы внутреннее событие. Во всяком случае, ответ Джек Строу прекрасно дал работы и не требует бесконечного цикла. – problemo

Смежные вопросы