面试官:线程池是如何做到线程复用的?有了解过吗?

面试官:线程池是如何做到线程复用的?有了解过吗?插图亿华云

前言

我们今天探讨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
Copyright © 2024 亿华云