jdk线程池中线程数量的调控问题
在jdk里面有个线程池的实现类ThreadPoolExecutor,在该类中所有的线程都存放在HashSet<Worker> workers的变量中,线程池根据其中的线程空闲情况,实时的调节线程池的大小。在调节的过程中,调用每个Worker对象的interruptIfIdle方法,该方法是判定当前线程处于空闲状态时,去关闭它。
这是该方法的实现源码:
void interruptIfIdle() {
final ReentrantLock runLock = this.runLock;
if (runLock.tryLock()) {
try {
if (thread != Thread.currentThread())
thread.interrupt();
} finally {
runLock.unlock();
}
}
}
我的问题是:
当系统执行到该方法时任务线程thread和当前执行线程Thread.currentTread()难道不相同吗?即为什么要进行thread != Thread.currentThread()的判断?
请大神指点迷津!