重入锁ReentrantLock的nonfairTryAcquire方法再次获取同步状态的处理逻辑是通过判断当前线程是否为获取锁的线程来决定获取操作是否成功,如果是获取锁的线程再次请求,则将同步状态值进行增加并返回true,表示获取同步状态成功。
那么为什么不能在判断当前线程是获取锁的线程再次请求直接返回true,而要将同步状态值加1,同步状态值加1的实际意义是什么?
那么为什么不能在判断当前线程是获取锁的线程再次请求直接返回true,而要将同步状态值加1,同步状态值加1的实际意义是什么?
解决方案 »
- 静态导入的区别
- java连接池如何延迟
- 关于JTable用线程刷新的问题
- 妈的,JLabel竟然设置不起来背景颜色
- 一个关于你们说的面试题,就是按照字节截取字符串的----如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而
- 请问NoClassDefFoundError,提示找不到类的定义?
- 求如何任意截取字符串
- 请教:JAVA中的数据传输问题?(100分相送)
- 加入package 包名后,为什么运行就会提示出错???
- 有人做过LDAP应用吗?
- java通过jacob调用ocx 方法可以使用 事件响应不了
- [JavaFx]如何使用Java7直接运行JavaFx程序?
final Thread current = Thread.currentThread();
int c = getState();
if (c == 0) {
if (compareAndSetState(0, acquires)) {
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;
}
+1的情况是current == getExclusiveOwnerThread(),是当前线程已经获取锁的情况下做加一
应该是同一个线程多次获取锁标记状态用的