随笔分类 - concurrent
java 并发包
摘要:此处源码分析,主要是基于读锁,非公平机制,JDK1.8。 问题: 1、ReentrantReadWriteLock是如何创建读锁与写锁? 2、读锁与写锁的区别是什么? 3、锁的重入次数与获取锁的线程数分别是用哪种方式记录的? 4、当队列中出现多个共享模式的线程节点连续排列时,那么当第一个共享模式的线
阅读全文
摘要:一:代码 虽然只有一句,但是源码却比较多: 这个方法中各个方法意义: 1、tryRelease(arg),尝试去解锁,通过改变state的值来释放锁,如果state的值变成了0,那么返回true,则锁释放完成,否则返回false; 2、unparkSuccessor,如果继任的线程节点存在,就去唤醒
阅读全文
摘要:先来看看这个state的定义: 同步的状态,是一个volatile修饰的私有整形变量,volatile修饰的变量是一个多线程可见的,但是多线程可见,并不能保证操作是原子的。在AbstractQueuedSynchronizer下的compareAndSetState方法保证了操作的原子性,volat
阅读全文
摘要:为了表述清楚假设当前请求获取锁的线程名称为“线程x” (1)非公平锁的第一步:当“线程x”请求获取到锁的时候,直接调用compareAndSetState(0, 1),这个方法会将判断state=0?如果等于0,说明这个锁没有被占领,那么“线程x”直接获取,这就是非公平锁,竞争锁成功之后,就将属性T
阅读全文

浙公网安备 33010602011771号