<分区>
我一直在阅读有关 Executors 服务的 Java 源代码。在检查 ThreadPoolExecutor 类时,我发现了这段关闭代码:
public void shutdown() {
final ReentrantLock mainLock = this.mainLock;
mainLock.lock();
try {
checkShutdownAccess();
advanceRunState(SHUTDOWN);
interruptIdleWorkers();
onShutdown(); // hook for ScheduledThreadPoolExecutor
} finally {
mainLock.unlock();
}
tryTerminate();
}
而且我不明白这个锁对方法来说是本地的有什么意义。 如果我的理解是正确的,那么每次调用这个函数都会创建新锁,这有点让这个锁变得多余(因为在线程调用中总是传递锁定)并且它在方法范围之外的任何地方都不可见。
这种编码模式在整个类(class)中重复,声明局部最终锁,锁定然后解锁。
编辑:
- 修复代码误读废话