public interface Executor {void execute(Runnable command);}public interface ExecutorService extends Executor {void shutdown();List<Runnable> shutdownNow();boolean isShutdown();boolean isTerminated();<T> Future<T> submit(Callable<T> task);<T> Future<T> submit(Runnable task, T result);Future<?> submit(Runnable task);...}public class Executors {public static ExecutorService newCachedThreadPool() {return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS,new SynchronousQueue<Runnable>());}...}
线程池顶级接口Executor,真正线程池接口ExecutorService,ExecutorService默认实现是ThreadPoolExecutor;普通类Executors里面调用的就是ThreadPoolExecutor。
对象:
CachedThreadPool() 可缓存线程池
- 线程数无限制
- 有空闲线程就复用空闲线程,若无则新建线程
- 一定程度减少频繁创建/销毁线程,减少系统开销
FixedThreadPool() 定长线程池
- 可控制线程最大并发数(同时执行的线程数)
- 超出的线程会在队列中等待
ScheduledThreadPool() 定长线程池
- 支持定时及周期性任务执行
SingleThreadExecutor() 单线程化的线程池
有且仅有一个工作线程执行任务 所有任务按照指定顺序执行,即遵循队列的入队出队规则
优点:
- a. 重用存在的线程,减少对象创建、消亡的开销,性能佳。
- b. 可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。
- c. 提供定时执行、定期执行、单线程、并发数控制等功能。
