У меня есть ситуация, когда мне нужно запустить Java-код, чтобы определить определенный статус базы данных (только несколько конкретных счетчиков) за каждые 1 с. Я планировал создать бесконечный цикл, который должен срабатывать только тогда, когда база данных не работает (останавливается административно или случайно). Может ли кто-нибудь показать мне примерный способ записи бесконечного цикла, который не навредит работающей базе данных? Или, даже если есть лучший способ приблизиться к этой цели, чтобы периодически собирать данные?Запись бесконечного цикла в Java
1
A
ответ
2
Использование ScheduledExecutorService
службы, как следующий пример:
import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() { System.out.println("beep"); }
};
final ScheduledFuture<?> beeperHandle =
scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
scheduler.schedule(new Runnable() {
public void run() { beeperHandle.cancel(true); }
}, 60 * 60, SECONDS);
}
public static void main(String[] args) {
BeeperControl bc=new BeeperControl();
bc.beepForAnHour();
}
}
Используйте 'ScheduledExecutorService'. – fge
Используйте либо java.util.Timer, либо что @fge рекомендует. –
Я думаю, вы пытаетесь задать хороший вопрос, но это требует улучшения. Покажите какой-нибудь код, покажите, что вы попробовали, и почему он не работает или что вы думаете, может быть не так. – djechlin