Несколько моментов:
Я бы настоятельно рекомендовал использовать ScheduledExecutorService
или какую-либо другую эквивалентную функцию, которая может быть предоставлена любыми инструментами или платформой, которые вы используете (например, @Scheduled
в Spring). В этих ситуациях есть много соображений, которые не сразу очевидны, и хорошо разработанная и поддерживаемая библиотека будет иметь дело с ними.
Во-вторых, редко можно опрашивать изменения таким образом без какой-либо задержки. Типичный сценарий может потребовать от вас, например, закрыть соединения с машинами, которые не ответили в течение 1 минуты. Для такого рода l oop вам не нужно постоянно проверять, как будет делать вышеупомянутый l oop. По крайней мере, вы должны включить вызов Thread.sleep()
, чтобы предотвратить чрезмерное использование ресурсов. (Это еще одна проблема, с которой ScheduledExecutorService
хорошо справляется).
Наконец, вы должны включить какой-нибудь способ изящно выйти из l oop, когда ваше приложение завершится. Достаточно простого boolean running = true;
для класса, и вы затем измените свой l oop на: while (running) {...}
. Если вы хотите выйти, просто установите running = false;
и ваш l oop выйдет.