不积跬步无以至千里,后继才能薄发
Executor框架
基于Executor框架,通过消费者-生产者模式,把任务的提交和执行分离。
1 | public interface Executor { |
在Execute框架中,线程不是执行主要的抽象,任务才是。
执行策略
ExecutorService
ExecutorService
拓展了 Executor
,拓展出了生命周期,用于管理处理器的生命周期,有:运行、关闭、已终止三个状态
Timer和ScheduledThreadPoolExecutor区别
Timer
基于绝对时间调度机制
单线程执行,如果执行时间超过周期,则会漏执行
执行线程抛出未检查错误时不会恢复
ScheduledThreadPoolExecutor
基于相对时间调度机制
基于线程池执行
线程饥饿死锁
在线程池中,执行中线程等待工作队列线程而导致死锁
线程池构造参数
int corePoolSize
基本大小,决定了线程池在空闲的时候会留存多少闲置线程
int maximumPoolSize
最大大小,决定线程池同时活动线程数量的上限
long keepAliveTime
闲置线程存活时间
TimeUnit unit
时间单位
BlockingQueue workQueue
ThreadFactory threadFactory
RejectExecutionHandler handler
饱和策略:
扩展ThreadPoolExecutor
可以对线程池进行拓展,改写 beforeExecute
、 afterExecute
、 terminated
,实现对线程池的日志、监控、计时等功能