private boolean addWorker(Runnable firstTask, boolean core);
//失败三种情况
// Check if queue empty only if necessary.
if (rs >= SHUTDOWN &&
! (rs == SHUTDOWN &&
firstTask == null &&
! workQueue.isEmpty()))
return false;
if (rs >= SHUTDOWN && (rs != SHUTDOWN || firstTask != null || workQueue.isEmpty())) {
//1. rs = STOP or TIDYING or TERMINATED
//2. rs = SHUTDONW && firstTask != null
//3. rs = SHUTDOWN && firstTask = null && workQueue.isEmpty() 此条为了挂起线程,自终止
return false;
}
上述成立 并且线程数量小于上线或指定值。即可添加worker