大屏展示 10个线程同时查询统计各个表,并行处理,
主线程 把任务投递 给 线程池,线程池中调出一个线程去处理
希望以一种 轻量级的 方式 实现 "i++" 线程安全 : compareAndSwap() : 针对某个变量实现++ 或 -- 确保线程安全
ctl 维护: 线程个数,
线程池有多种状态:
线程池状态的流转:
线程池 种的工作队列中的线程一个个被处理(SHUTDOWN状态)、线程池中的线程被一个个清理掉(STOP状态) 后,线程池中工作线程个数为0时,是系统实现的,并非程序员手动执行,转换为了 TIDYING 状态
而后再有TIDYING 转换为 TERMINATE 状态,TERMINATE 状态 是一个空函数,允许用户自己写一写结束线程事件的扫尾工作代码
一般用 ThreadPoolExecuter 创建线程池,且在局部使用 ThreadPoolExcuter 后,一定得自行shutdown 释放资源,防止内存泄漏
传说中的线程池7个参数:
非核心线程 空闲了 keepAliveTime 这么长时间,还没干活,就会被销毁
但也可以指定为 核心线程的 空闲时间,超过空闲时间 ,删核心
allowCoreThreadTimeOut() 属性设置为 true 就可以删除核心线程
若线程池核心 满员、非核心也满员、任务队列也满员,再来任务 -- 拒接任务 :RejectExecutionHandler