1.使用线程池的优势
减少线程使用过程中创建以及销毁消耗的资源,减少延迟
控制线程数量
2.风险
所有并发存在的风险,以及与线程池有关的死锁、资源不足和线程泄露
3.常用的线程池
1.newCachedThreadPool 可缓存线程池 如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程
特点:几乎无线程数量限制
如果长时间没有任务加入则工作线程自动终止,直到新任务加入创建新的一个线程
需要注意线程数量控制。
2.newFixedThreadPool 固定数量线程池 每提交一个任务就创建一个线程,超出初始数量最大值则将任务存到池队列中
特点:固定线程数量,空任务时也占用一定资源
3.newSignelThreadExecutor 单例化Executor 唯一的工作线程执行任务保证执行顺序(FIFO,LIFO,优先级)。如果线程异常结束会有另一个替代,保证顺序执行。
特点:任意时间只有一个活动线程,保证顺序执行任务。
4.newScheduleThreadPool 固定长度线程支持定时和周期执行任务