Java 线程池的使用说明
2017-06-02 本文已影响10人
黑色海鸥
转自:http://mp.weixin.qq.com/mp/getmasssendmsg?__biz=MzA5MzI3NjE2MA==#wechat_webview_type=1&wechat_redirect
为什么会有线程池
** 1. 创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率,例如:**
记创建线程消耗时间 T1,执行任务消耗时间 T2,销毁线程消耗时间 T3
如果 T1+T3>T2,那么是不是说开启一个线程来执行这个任务太不划算了!
正好,线程池缓存线程,可用已有的闲置线程来执行新任务,避免了 T1+T3 带来的系统开销
2. 线程并发数量过多,抢占系统资源从而导致阻塞
我们知道线程能共享系统资源,如果同时执行的线程过多,就有可能导致系统资源不足而产生阻塞的情况
运用线程池能有效的控制线程最大并发数,避免以上的问题
3. 对线程进行一些简单的管理
比如:延时执行、定时循环执行的策略等
运用线程池都能进行很好的实现
如何使用线程池###
抽象类Executor
实现类ThreadPoolExecutor
对线程池的配置,就是对 ThreadPoolExecutor 构造函数的参数的配置,既然这些参数这么重要,就来看看构造函数的各个参数吧
常用5个,其他2个不常用
- int corePoolSize => 该线程池中核心线程数最大值