public static void main(String[] args) throws InterruptedException {
//启动了默认两个线程的线程池,调度两个周期性任务。
ScheduledExecutorService execService = Executors.newScheduledThreadPool(2);
//在延时1秒后第一次执行任务,以后以5秒为周期再次执行任务。scheduleAtFixedRate拥有固定的执行周期,这里时5秒
//第一个参数是任务,第二个参数是延时时间,第三个参数是执行周期,第四个参数是时间单位
execService.
scheduleAtFixedRate(
newRunnableInstance(), 1, 5, TimeUnit.SECONDS);
//即每次执行时间为:initialDelay, initialDelay+executeTime+delay, initialDelay+2*executeTime+2*delay;ScheduleWithFixedDelay 取决于每次任务执行的时间长短,是基于不固定时间间隔进行任务调度。
//execService.scheduleWithFixedDelay(newRunnableInstance(), 1, 10, TimeUnit.SECONDS);
//Thread.sleep(5000L);
//execService.shutdown();
}
private static Runnable newRunnableInstance() {
return new Runnable(){
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+" -> "+System.currentTimeMillis()+" task execute!");
}
};
}