线程池
来源:互联网 发布:路由器mac地址修改 编辑:程序博客网 时间:2024/06/10 08:45
1. 线程池作用:通过复用线程控制线程数量,来节省内存开销,和提高运行速度。
类: ThreadPoolExecutor.java
2. 创建对象时各个参数的含义:
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) {
corePoolSize: 核心线程数量。相当于公司中的在编人员数。
maximumPoolSize: 最大线程数。公司由于业务繁忙,队列排队也排满了,可以扩充一些临时工。公司可以一共雇佣多少人(在编 + 临时工)。
keepAliveTime:闲置线程存活时间。公司由于业务减少,临时工出现空闲。临时工可以留在公司的时间。
unit:设置keepAliveTime的单位
workQueue:工作队列。 如果业务实在繁忙,则加入工作队列,排队处理。
threadFactory: 线程工厂。用于创建线程。相当于公司的人力资源部。
handler:超过队列容量时,处理策略。
在 ThreadPoolExecutor 里面定义了 4 种 handler 策略,分别是
1. CallerRunsPolicy :这个策略重试添加当前的任务,他会自动重复调用 execute() 方法,直到成功。
2. AbortPolicy :对拒绝任务抛弃处理,并且抛出异常。
3. DiscardPolicy :对拒绝任务直接无声抛弃,没有异常信息。
4. DiscardOldestPolicy :对拒绝任务不抛弃,而是抛弃队列里面等待最久的一个线程,然后把拒绝任务加到队列。
线程池执行的逻辑是,增加一个任务加一个worker, 当worker大于核心线程数时,放入队列排队处理,当队列也排满时,使用handler策略处理。
参考:http://blog.csdn.net/abing37/article/details/4506759
- 线程与线程池
- 线程池 线程优先级
- Executor线程,线程池
- 线程、多线程、线程池
- IOS-线程、线程池
- Java线程:线程池
- 线程和线程池
- 线程、多线程、线程池
- 线程、多线程、线程池
- 线程(六)线程池
- ExecutorService(线程池)+线程
- 线程和线程池
- 线程&线程池 简略
- 线程和线程池
- 线程池 线程锁
- 线程、线程池总结
- 线程与线程池
- 线程、锁、线程池
- 怎样了解存在---辩证唯物主义认识论
- myeclipse10配置maven
- SpringMVC源码总结(八)类型转换PropertyEditor的背后
- IOS -- objc_msgSend 函数的理解
- Windows多线程
- 线程池
- OpenGL编程逐步深入(六)平移变换
- Xcode 6中添加预编译pch文件
- Access数据库中提示错误“至少一个参数没有被指定值”错误的可能原因
- java枚举问题
- MYSQL管理之主从同步管理
- TCP的状态,兼谈Close_Wait和Time_Wait的状态 (keepalive机制)
- 算法复杂度
- Android开源库集锦