面试官:线程池是如何做到线程复用的?有了解过吗?
前言
我们今天探讨ThreadPoolExecutor,一起来看下吧!
ThreadPoolExecutor中是如何做到线程复用的?
我们知道,一个线程在创建的时候会指定一个线程任务,当执行完这个线程任务之后,线程自动销毁。但是线程池却可以复用线程,一个线程执行完线程任务后不销毁,继续执行另外的线程任务。那么它是如何做到的?这得从addWorker()说起。
addWorker()
先看上半部分addWorker()。
private boolean addWorker(Runnable firstTask, boolean core) {
retry:
for (;;) {
int c = ctl.get();
int rs = runStateOf(c);
// 对边界设定的检查
if (rs
THE END