
获得徽章 6
- 下面是Java中ThreadPoolExecutor中addWorker()的某段源码:
jdk1.8:
if (rs >= SHUTDOWN &&
! (rs == SHUTDOWN &&
firstTask == null &&
! workQueue.isEmpty()))
return false;
jdk17:
if (runStateAtLeast(c, SHUTDOWN)
&& (runStateAtLeast(c, STOP)
|| firstTask != null
|| workQueue.isEmpty()))
return false;
jdk1.8中表达的意思和和jdk17表达的意思一样,但是jdk1.8的表达方式晦涩难懂,有点绕,
在jdk17中个人感觉还是有点绕,如果是我,就直接写成:
if ( runStateAtLeast(c, SHUTDOWN)
&& (workQueue.isEmpty() || firstTask != null)
|| runStateAtLeast(c, STOP) )
return false;
1. 如果当前线程池的状态是SHUTDOWN并且 任务队列workQueue是空或者firstTask != null 则直接返回false
2. 或者当线程池的状态是STOP,则直接返回false展开等人赞过评论4