标签:打开 rem 核心线程 executor point exe url post keep
线程池,我觉得我准备好了,但是并没有。
面试官:知道线程池吗
我:知道啊,然后准备回答,线程池原理及实现流程
面试官打断:最近面试人挺多的,基本都知道原理,你给我讲讲keepAliveTime具体是怎样实现非核心线程过期回收的。
我:.....(黑人问号)
面试完,迫不及待的打开源码后,发现之前看源码,漏掉了一些细节,非核心线程过期回收的实现竟然这么简单。
前文源码学习:Java并发包中的线程池ThreadPoolExecutor
1、ThreadPoolExecutor.executor()再研究
public void execute(Runnable command) { if (command == null) throw new NullPointerException(); int c = ctl.get(); if (workerCountOf(c) < corePoolSize) {
//当前线程数<核心线程数时
//创建工作线程Worker() if (addWorker(command, true)) return; c = ctl.get(); } if (isRunning(c) && workQueue.offer(command)) { int recheck = ctl.get(); if (! isRunning(recheck) && remove(command)) reject(command); else if (workerCountOf(recheck) == 0) addWorker(null, false); } else if (!addWorker(command, false)) reject(command); }
标签:打开 rem 核心线程 executor point exe url post keep
原文地址:https://www.cnblogs.com/wqff-biubiu/p/12589450.html