# 线程池介绍
整理自《JAVA 编程思想》
一、概述
使用执行器Executor
管理Thread
对象。可管理异步任务的执行,无需显示地管理线程的生命周期。
二、常用Executor
CachedThreadPool
通常会创建与所需数量相同的线程,然后在它回收旧线程时停止创建新线程。
ExecutorService exec = Executors.newCachedThreadPool(); for (int i = 0; i < 5; i++) { exec.execute(new LiftOffImpl()); } exec.shutdown();
FixedThreadPool
可限制线程数量。
ExecutorService exec = Executors.newFixedThreadPool(5); for (int i = 0; i < 5; i++) { exec.execute(new LiftOffImpl()); } exec.shutdown();
SingleThreadExecutor
所有任务使用相同线程并按顺序依次执行。
ExecutorService exec = Executors.newSingleThreadExecutor(); for (int i = 0; i < 5; i++) { exec.execute(new LiftOffImpl()); } exec.shutdown();
三、优点
重用存在的线程,减少对象创建、消亡的开销,性能佳。
可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。
提供定时执行、定期执行、单线程、并发数控制等功能。