首页 > 其他 > 详细

ThreadPool使用流程

时间:2014-09-17 15:43:32      阅读:282      评论:0      收藏:0      [点我收藏+]

bubuko.com,布布扣

keepAliveTime只针对大于corePoolSize且小于maximumPoolSize的空闲线程,比如corePoolSize=10,maxPoolSize=20,当前有15个线程在跑着,过段时间有4个线程处于等待状态的时间超过了keepAliveTime指定的时间,则结束掉此4个线程

普通的线程有五个状态:新建,可运行,阻塞,等待,结束。
线程池中的线程只有两个状态:可运行,等待

shutdown,只是遍历池中所有处于等待状态的空闲worker,对他们执行interupter操作
shutdownNow,则遍历池中所有worker线程,执行interupter操作,并返回等待处理的任务列表。

也就是说,虽然执行了shutdown(或shutDownNow),并不一定能够停止运行过程中的线程,只能对他们中断,告知他们,你们的活可以停了,但是具体要不要停,则由线程本身的逻辑来控制,这样做的好处,我觉得是避免了代码逻辑的不完整性,避免破坏代码中可能存在的原子性逻辑。

ThreadPool使用流程

原文:http://my.oschina.net/zjoschina/blog/314561

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!