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);
}
}

0 0
原创粉丝点击