【Concurrency-ScheduledExecutorService】


简介

线程池执行者在ThreadPoolExecutor的基础上给我们提供了延时(delay)执行和周期执行的功能。性能会优于Timer包。

继承结构

结构

参考:

ThreadPoolExecutor
Executor
ExecutorService
ScheduledExecutorService
AbstractExecutorService

DEMO

package calvin;

import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;


public class TestScheduledThreadPoolExecutor {
	public static ScheduledThreadPoolExecutor executor = null;
	
	public static void main(String[] args){
		System.out.println("test ScheduledThreadPoolExecutor");
		executor = new ScheduledThreadPoolExecutor(5);
		myTask task = new myTask();
		// 2秒后执行,执行后就停止
		executor.schedule(task, 2l, TimeUnit.SECONDS);
		// 5秒后执行,执行完后每10秒再执行不会自动停止
		executor.scheduleWithFixedDelay(task, 5l, 10, TimeUnit.SECONDS);
		
	}
	
	public static class myTask implements Runnable{
		public AtomicInteger index = new AtomicInteger();
		@Override
		public void run(){
			System.out.println(System.currentTimeMillis() + "start working  thread = "+Thread.currentThread().getName() + " index =" + index.incrementAndGet());
		}
		
	}
}

小结

  1. 对于Executor对象来说他的task执行顺序是根据FIFO原则来运行的
  2. 给我们提供了定时执行任务的功能
原文地址:https://www.cnblogs.com/calvin-207/p/6127405.html