问题1:线程池的里的线程是如何销毁的呢?
从字面的意思理解, 销毁好像是有外部的线程去主动把线程池里的线程给销毁掉,事实上, java里的thread无法由外部来强制结束的(Thread.stop()这种是不安全的, 不推荐使用), 所以线程池里的线程, 都是自己主动退出, 结束掉的 那么是如何退出的呢? 答案很简单,看下面的代码
private Runnable getTask() {
......
Runnable r = workQueue.poll(keepAliveTime, TimeUnit.NANOSECONDS);
}
while (task != null || (task = getTask()) != null) {
......
}
线程从workQueue里面获取task, 最多等待 keepAliveTime时间,然后 task = null, 线程就退出while循环, 主动退出了
欢迎大家加我微信进一步探讨