我有一种情况,我需要运行Java代码来确定每1秒的某些数据库状态(仅限少数特定计数)。我计划创建一个无限循环,只有在数据库未运行时才会中断(在管理上或意外停止)。谁能告诉我一个编写无限循环的示例方法,它不会对正在运行的数据库造成任何伤害?或者,即使有更好的方法来实现此目标,也可以定期收集数据?
答案 0 :(得分: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();
}
}