为什么ThreadPoolExecutor源码实现中用的是ReentrantLock锁?

private boolean addIfUnderCorePoolSize(Runnable firstTask) {
        Thread t = null;
        final ReentrantLock mainLock = this.mainLock;
        mainLock.lock();
        try {
            if (poolSize < corePoolSize && runState == RUNNING)
                t = addThread(firstTask);
        } finally {
            mainLock.unlock();
        }
        if (t == null)
            return false;
        t.start();
        return true;
    }

ThreadPoolExecutor源码实现中大量使用了ReentrantLock 锁,请问为什么使用的是ReentrantLock 锁而不是别的锁机制呢?

30秒到达战场
浏览 556回答 1
1回答

撒科打诨

不使用可重入锁,如果同一个线程多次调用锁就麻烦大了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java