我正在开始使用 Java 并发功能,并在界面上ScheduledExecutorService
。我遇到了这个片段,它每 10 秒发出一次哔声,持续一个小时:
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);
}
}
对于像我这样的初学者来说,这似乎很容易,但我的问题是我想要一个永远每 10 秒读取一次 MySql 表的 Java 程序。预定执行者是此类工作的最佳选择吗?