-
Notifications
You must be signed in to change notification settings - Fork 46.1k
Closed
Labels
perfect contentimprove the contentimprove the content
Description
问题描述:
1、并发编程--> 重要知识点-->从ReentrantLock的实现看AQS的原理及应用中有一副以非公平锁方式加锁的图解
2、其中如下部分的流程图是否与源码有出入呢?

3、源码jdk1.8如下
final boolean nonfairTryAcquire(int acquires) {
final Thread current = Thread.currentThread();//获取当前线程
int c = getState();
if (c == 0) {
if (compareAndSetState(0, acquires)) {//CAS抢锁
setExclusiveOwnerThread(current);//设置当前线程为独占线程
return true;//抢锁成功
}
}
else if (current == getExclusiveOwnerThread()) {
int nextc = c + acquires;
if (nextc < 0) // overflow
throw new Error("Maximum lock count exceeded");
setState(nextc);
return true;
}
return false;
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
perfect contentimprove the contentimprove the content