我有一种情况,我需要每 1 秒运行一次 Java 代码来确定某些数据库状态(仅几个特定的计数)。我正计划创建一个无限循环,该循环仅在数据库未运行(管理或意外停止)时才发生。谁能告诉我一个示例方法来编写不会对正在运行的数据库造成任何伤害的无限循环?或者,即使有更好的方法来实现这个目标来定期收集数据?
问问题
181 次
1 回答
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();
}
}
于 2013-06-22T03:20:05.587 回答