2 sunsson sunsson 于 2016.05.12 10:23 提问

ThreadPoolExecutor源码shutdown问题 10C

图片说明
上图中的方法是ThreadPoolExecutor中shutdown中执行的中断空闲线程的方法,在此方法中会执行tryLock()方法,在下图中会从队列中获取执行任务,然后获取锁图片说明
使我疑惑的地方是如果任务获取成功但是还没有获取锁的时候,那么interruptIdleWorkers中就会获取到锁,从而认为线程是空闲的,然后发送中断信息,那么此时获取的task岂不就不能执行了?忘大神解答,不胜感激

2个回答

CSDNXIAOD
CSDNXIAOD   2016.05.16 11:21

线程池ThreadPoolExecutor类源码分析
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

silehaixianghuirenj
silehaixianghuirenj   2016.10.08 01:21

olExecutor源码shutdown问题 10C
图片说明
上图中的方法是ThreadPoolExecutor中shutdown中执行的中断空闲线程的方法,在此方法中会执行tryLock()方法,在下图中会从队列中获取执行任务,然后获取锁图片说明,
使我疑惑的地方是如果任务获取成功但是还没有获取锁的时候,那么interruptIdleWorkers中就会获取到锁,从而认为线程是空闲的,然后发送中断信息,那么此时获取的task岂不就不能执行了?忘大神解答,不胜感激

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
ThreadPoolExecutor解析-主要源码研究
ThreadPoolExecutor解析-主要源码研究
ThreadPoolExecutor 的 shutdown() 和shutdownNow()
public List shutdownNow() {         List tasks;         final ReentrantLock mainLock = this.mainLock;         mainLock.lock();         try {             checkShutdownAccess();             advanc
ThreadPoolExecutor的应用和实现分析(下)—— 生命周期相关源码分析
前面提到ExecutorService是对Executor的扩展,增加了submit()等提交和调用任务的方法,也增加了对Executor生命周期的定义。本篇将结合shutdown()、shutdownNow()、awaitTermination()和tryTerminate()几个方法的实现对ThreadPoolExecutor生命周期相关的逻辑做分析整理。 0. ExecutorServ
ThreadPoolExecutor的shutDown和shutDownNow的区别
import java.util.List; import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * Created by Administrator on 2017/3/23. * * ExecutorService
ThreadPoolExecutor几点应用建议
ThreadPoolExecutor几点使用建议 背景 前段时间一个项目中因为涉及大量的线程开发,把jdk cocurrent的代码重新再过了一遍。这篇文章中主要是记录一下学习ThreadPoolExecutor过程中容易被人忽略的点,Doug Lea的整个类设计还是非常nice的   正文 先看一副图,描述了ThreadPoolExecutor的
ThreadPoolExecutor的shutdown和shutdownNow方法
shutdown()和shutdownNow()是用来关闭线程池的。 shutdown方法如下: public void shutdown() { final ReentrantLock mainLock = this.mainLock; mainLock.lock(); try { checkShut
threadPoolExecutor 中的 shutdown() 、 shutdownNow() 、 awaitTermination() 的用法和区别
最近在看并发编程,在使用到ThreadPoolExecutor时,对它的三个关闭方法(shutdown()、shutdownNow()、awaitTermination())产生了兴趣,同时又感到迷惑。查了些资料,自己写了测试代码,总算有了个比较清晰的认识。下面一
ThreadPoolExecutor源码解析(基于Java1.8)
第一部分:ThreadPoolExecutor的继承结构 根据上图可以知道,ThreadPoolExecutor是继承的AbstractExecutorService(抽象类)。再来看一下AbstractExecutorService的结构可以发现,AbstractExecutorService实现了ExecutorService,并且ExecutorService继承Executor接
ThreadPoolExecutor(六)——线程池关闭之后
上一篇主要从代码角度介绍了线程池关闭相关的方法,包括各个方法之间的逻辑关系,调用关系和产生的效果。 这一篇更多从逻辑角度上来说一下线程池在shutdown之后,原来正常的处理流程有哪些变化,既是总结也是扩展。 shutdown操作之后,首先最重要的一点变化就是线程池状态变成了SHUTDOWN。该状态是开始关闭线程池之后,从RUNNING改变状态经过的第一个状态(还有一种情况是直接进STOP,调
python3源码剖析之concurrent.futures.ThreadPoolExecutor
0x00 文档路径: Python » 3.6.2 Documentation » The Python Standard Library » 17. Concurrent Execution » 0x01 模块简述:添加于python3.2提供更加高效的接口来实现异步执行通过具体实现来剖析0x02 具体实现参考官方文档给出的例子from concurrent.futures import Thr