File tree Expand file tree Collapse file tree 1 file changed +10
-10
lines changed
9.深入理解AbstractQueuedSynchronizer(AQS) Expand file tree Collapse file tree 1 file changed +10
-10
lines changed Original file line number Diff line number Diff line change 26
26
27
27
在AQS有一个静态内部类Node,其中有这样一些属性:
28
28
29
- > volatile int waitStatus //节点状态
30
- > volatile Node prev //当前节点/线程的前驱节点
31
- > volatile Node next; //当前节点/线程的后继节点
32
- > volatile Thread thread;//加入同步队列的线程引用
33
- > Node nextWaiter;//等待队列中的下一个节点
29
+ > volatile int waitStatus //节点状态
30
+ > volatile Node prev //当前节点/线程的前驱节点
31
+ > volatile Node next; //当前节点/线程的后继节点
32
+ > volatile Thread thread;//加入同步队列的线程引用
33
+ > Node nextWaiter;//等待队列中的下一个节点
34
34
35
35
节点的状态有以下这些:
36
36
37
- > int CANCELLED = 1//节点从同步队列中取消
38
- > int SIGNAL = -1//后继节点的线程处于等待状态,如果当前节点释放同步状态会通知后继节点,使得后继节点的线程能够运行;
39
- > int CONDITION = -2//当前节点进入等待队列中
40
- > int PROPAGATE = -3//表示下一次共享式同步状态获取将会无条件传播下去
41
- > int INITIAL = 0;//初始状态
37
+ > int CANCELLED = 1//节点从同步队列中取消
38
+ > int SIGNAL = -1//后继节点的线程处于等待状态,如果当前节点释放同步状态会通知后继节点,使得后继节点的线程能够运行;
39
+ > int CONDITION = -2//当前节点进入等待队列中
40
+ > int PROPAGATE = -3//表示下一次共享式同步状态获取将会无条件传播下去
41
+ > int INITIAL = 0;//初始状态
42
42
43
43
现在我们知道了节点的数据结构类型,并且每个节点拥有其前驱和后继节点,很显然这是** 一个双向队列** 。同样的我们可以用一段demo看一下。
44
44
You can’t perform that action at this time.
0 commit comments