怎么判断是否是独占呢?

来源:11-5 AQS简要分析

慕沐3053333

2021-04-15

独占是指多个线程不能共享一把锁。
ReentryLock是独占锁我能够理解,即调用lock方法时只能有一个线程持有锁,没有持有的线程则进入wait或者timed_waitd状态。
那CountDownLatch和Semaphore这两个类的锁是共享的?怎么理解?

写回答

1回答

悟空

2021-04-15

CountDownLatch里,每个线程调用await都相当于是尝试获得,所以是共享。

但是这个不是共享锁的概念,共享锁的典型例子是读写锁。

0
2
悟空
回复
慕沐3053333
对的,是这个意思。在AQS中,独占模式的意思是,如果已被持有,其他线程的请求是不可能成功了,shared模式的意思,如果已被持有,其他线程的请求有可能成功,但非必须成功。可以看一下AQS的英文注释哈。
2021-04-15
共2条回复

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

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

1599 学习 · 573 问题

查看课程