并发工具类:
- 为了并发安全:互斥同步、非互斥同步、无同步方案
- 管理线程、提升效率
- 线程协作
为了线程安全:
底层原理分类:
- 互斥同步
- 非互斥同步
- 结合互斥和非互斥同步
- 无同步方案、不可变
线程池
创建线程池:
线程添加规则:
线程池的创建方式:自动和手动
常见线程池的特点:
1、FixedThreadPool:
2、newCachedThreadPool:可缓存线程池,自动回收多余线程
3、ScheduledThreadPool:支持定期和周期任务
4、newSingleThreadExecutor:固定一个线程的线程池,无界队列
5、workStealingPool:子任务、窃取,jdk 1.8
勾子方法,在线程池每个任务执行前后做处理,如日志、统计等:
线程池的接口关系:
线程池状态:
- running:接受新任务并处理排队任务
- shutdown:不接受新任务,但处理排队任务
- stop:不接受新任务,也不处理排队任务,并中断正在进行的任务
- tidying:所有的任务都已终止,workerCount 为 0 时,线程会转换到 tidying 状态,并将运行 terminate() 钩子方法
- terminated:terminate() 运行完成