zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java中的锁之AbstractQueuedSynchronizer源码分析(二)

JAVA源码 分析
2023-09-27 14:21:15 时间

一、成员变量。

1、目录。

 

2、state。该变量标记为volatile,说明该变量是对所有线程可见的。作用在于每个线程改变该值,都会马上让其他线程可见,在CAS(可见锁概念与锁优化)的时候是必不可少的。在AQS类中,不会直接操作这个值,而是交由它的子类去操作和定义他的作用。

##############################################################################

 

3、head与tail。则是这个链表的头尾指针。作用是存储获取锁失败的阻塞线程。同样的,这个链表是会被多个线程操作的,所以它里面的变量多是被标记为volatile,并且操作也要通过CAS等原子方法去执行。

 

######################################################

#################################################

 

4、CAS相关。

 

5、

6、

7、

8、

9、