Моя программа запускается в основном и запускает несколько потоков, которые выполняют работу программы (чтение датчиков, обновление базы данных, отображение информации на экране). Я хочу, чтобы программа работала неограниченно долго.Способы поддержания бесперебойной работы Java-программы, которая эффективна?
На данный момент после того, как мои темы стали в основном я просто:
public static void main(String []args)
{
//threads start here
while(true) {}
}
Очевидно, что это работает, но мне интересно, если это тратить ресурсы зацикливания.
Есть ли эффективный способ держать программу в рабочем состоянии. Есть ли изящный способ выхода? i.e начните прослушиватель событий в главном, который прослушивает клавиатуру или событие или что-то еще?
Я также попробовал это, если это лучше:
while(true) {
TimeUnit.HOURS.sleep(1);
}
EDIT: подробнее о резьбе:
Я не уверен, какой тип резьбы они. Я реализую интерфейс под названием gnu.io.SerialPortEventListener, который запускает и обрабатывает потоки, поэтому его отвлекает от меня. Мне нужно взглянуть на API, хотя я думаю, что это плохо документировано, или посмотрите на источник, я думаю. Они сохраняют JVM в среде IDE (blueJ), но не при запуске программы в командной строке. Я просто использую метод интерфейса, чтобы добавить прослушиватель событий в COM-порт, который запускает потоки.
Вы также должны добавить код, который показывает, как вы начинаете темы. Я предполагаю, что вы устанавливаете флаг демона. – isnot2bad
Теперь спасибо, спасибо –
Программа не работает навсегда. Всегда должен быть способ остановить и перезапустить его. По крайней мере, когда система выключается, программа должна иметь возможность останавливаться и очищаться по порядку. – isnot2bad