1、Executor:线程池顶级接口,只有一个方法
2、ExecutorService:真正的线程池接口
1) void execute(Runnable command) :执行任务/命令,没有返回值,一般用来执行Runnable
2) <T> Future<T> submit(Callable<T> task):执行任务,有返回值,一般又来执行Callable
3) void shutdown() :关闭线程池
3、AbstractExecutorService:基本实现了ExecutorService的所有方法
4、ThreadPoolExecutor:默认的线程池实现类
5、ScheduledThreadPoolExecutor:实现周期性任务调度的线程池
6、Executors:工具类、线程池的工厂类,用于创建并返回不同类型的线程池
1) Executors.newCachedThreadPool():创建一个可根据需要创建新线程的线程池
2) Executors.newFixedThreadPool(n); 创建一个可重用固定线程数的线程池
3) Executors.newSingleThreadExecutor() :创建一个只有一个线程的线程池
4) Executors.newScheduledThreadPool(n):创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。
7、线程池ThreadPoolExecutor参数
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) { } |
1、CallerRunsPolicy:如果发现线程池还在运行,就直接运行这个线程
2、DiscardOldestPolicy:在线程池的等待队列中,将头取出一个抛弃,然后将当前线程放进去。
3、DiscardPolicy:什么也不做
4、AbortPolicy:java默认,抛出一个异常:
原文:https://www.cnblogs.com/huxiaoyang/p/11979348.html