1. 线程池框架
1.1 Executor
在通常情况下,我们使用多线程首先需要定义任务并且手动执行它,而在JDK1.5中提供了线程池框架来解耦任务和任务的执行。
new Thread(new Runnable()).start();
// 线程池
public interface Executor{
void execute(Runnable command); // 注入方法,线程池管理执行
}
因此在线程池内部,可以对任务的执行做多种扩展,无论是同步异步,还是增强检验。
1.2 ExecutorService
ExecutorService在Executor的基础上进行了增强,包括对任务的控制、自身生命周期的管理。主要包括:
- 关闭执行器,禁止任务的提交
- 监视执行器的状态
- 提供对异步任务的支持:通过引入Future对象提供异步支持(支持异步下线程同步),前面讲过
- 提供对批处理任务的支持
1.3 ThreadPoolExecutor
很复杂,不想看,也没时间,下次有空再来看吧。
#核心和最大线程池大小
ThreadPoolExecutor会根据corePoolSize和maximumPoolSize设置的边界来自动调整线程池的大小
(getPoolSize