// 获取线程池中的有效线程数量
 int wc = workerCountOf(c);

 // 如果开发者主动开启allowCoreThreadTimeOut并且获取当前工作线程大于corePoolSize,那么该线程是可以被超时回收的
 // allowCoreThreadTimeOut默认为false,即默认不允许核心线程超时回收
 // 这里也说明了在核心线程以外的线程都为“临时”线程,随时会被线程池回收
 boolean timed = allowCoreThreadTimeOut || wc > corePoolSize;//当前线程数大于核心线程数
 
 // 这里说明了两点销毁线程的条件:
 // 1.原则上线程池数量不可能大于maximumPoolSize,但可能会出现并发时操作了setMaximumPoolSize方法,如果此时将最大线程数量调少了,很可能会出现当前工作线程大于最大线程的情况,这时就需要线程超时回收,以维持线程池最大线程小于maximumPoolSize,
 // 2.timed && timedOut 如果为true,表示当前操作需要进行超时控制,这里的timedOut为true,说明该线程已经从workQueue.poll()方法超时了, 
 // 以上两点满足其一,都可以触发线程超时回收
 if ((wc > maximumPoolSize || (timed && timedOut))
     && (wc > 1 || workQueue.isEmpty())) {
   // 尝试用AQS将线程池线程数量减一
   if (compareAndDecrementWorkerCount(c))
     // 减一成功后返回null,线程被回收
     return null;
   // 否则循环重试
   continue;
 }

 try {
   // 如果timed为true,阻塞超时获取任务,否则阻塞获取任务
   Runnable r = timed ?
     workQueue.poll(keepAliveTime, TimeUnit.NANOSECONDS) :
   workQueue.take();
   if (r != null)
     return r;
   // 如果poll超时获取任务超时了, 将timeOut设置为true
   // 继续循环执行,如果碰巧开发者开启了allowCoreThreadTimeOut,那么该线程就满足超时回收了
   timedOut = true;
 } catch (InterruptedException retry) {
   timedOut = false;
 }
难道面试官的意思是,超过了规定的时间还要进行等待一段时间在进行回收,而不是马上?