`
Vampiredx
  • 浏览: 3631 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论
文章列表
ThreadPoolExecutor 的关闭流程很简单 void shutdown() 1. 获取 mainLock 锁 2. 当前的状态如果是 SHUTDOWN ,STOP ,TIDYING ,TERMINATED 则退出 3. 如果不是则 CAS 设置状态为 SHUTDOWN 4. CAS 失败则回到 step 2 继续 5. 对所有 Worker 线程调用 interrupt() 中断阻塞 6. 释放 mainLock ,调用 tryTerminate() 关闭线程池 step 5 中断所有线程后,新的任务不能再提交进来,但是 worker 线程并不会立即退出,会继续从 workQue ...
ThreadPoolExecutor 实现了 ExecutorService 接口,从常用的方法来看一下 ThreadPoolExecutor 内部实现的大致流程. Future submit(Callable task) 这个方法的实现在父类 AbstractExecutorService 里面: 1. 用 Callable task去创建 FutureTask 实例。FutureTask 是 Runnab ...
写这篇文章主要还是为了强迫自己把学习Java源代码的一些要点记录下来。 构造函数: ThreadPoolExecutor( int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandl ...
Global site tag (gtag.js) - Google Analytics