关于公平锁, 判断是否阻塞

来源:5-14 看似读锁按部就班

woy

2020-02-15

老师, 我不太理解, 公平锁中判断 是否需要阻塞的方式

        final boolean writerShouldBlock() {
            return hasQueuedPredecessors();
        }
        final boolean readerShouldBlock() {
            return hasQueuedPredecessors();
        }

为什么根据队列中是否有等待的线程来判断当前线程是否阻塞呢?
比如线程a获取写锁正在执行, 线程b请求写锁, 但这时wait queue中是空的啊, 这不就导致线程b不进行阻塞了么.

写回答

1回答

悟空

2020-02-15

是的,不进行阻塞,会去尝试抢锁,抢不到再做后面的步骤,再阻塞。

1
0

深度解密Java并发工具,精通JUC,成为并发多面手

JUC全方位讲解,构建并发工具类知识体系

1599 学习 · 573 问题

查看课程