SecheduledExecutorService
来源:互联网 发布:数据库概论百度云 编辑:程序博客网 时间:2024/05/16 09:35
一个ExecutorService,可安排给定一段时间之后执行或者周期执行。
schedule方法可生成不同延迟的任务,返回任务对象。这些任务能被取消或者检查完成情况。scheduleAtFixedRate和scheduleWithFixedDelay能够周期性地执行任务,直到它被取消为止。用Executor的execute方法和ExecutorService的submit方法提交的命令相当于请求的延迟为0。在schedule方法中,允许0和负数。0和负数被认为是允许立刻执行的请求。
所有的schedule方法提供相对延迟和周期作为参数,而不是绝对的延迟和周期。将以Date表示的绝对时间转变成所需要的形式很简单
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
public class BeepControl {
private final ScheduledExecutorService scheduler=Executors.newScheduledThreadPool(1);
public void beepForAHour(){
final Runnable beeper = new Runnable() {
public void run() { System.out.println("beep"); }
};
final ScheduledFuture<?> beeperHandle=scheduler.scheduleAtFixedRate(beeper, 10, 10, TimeUnit.SECONDS);
scheduler.schedule(new Runnable() {
@Override
public void run() {
beeperHandle.cancel(true);
}
}, 60*60, TimeUnit.SECONDS);
}
}