草庐IT

(原创)多线程并发:AQS源码分析(1)——独占锁的实现原理

  谈到java中的并发,我们就避不开线程之间的同步和协作问题,谈到线程同步和协作我们就不能不谈谈jdk中提供的AbstractQueuedSynchronizer(翻译过来就是抽象的队列同步器)机制;  (一)、AQS中的state和Node含义:    AQS中提供了一个intvolatilestate状态的变量用来标识共享资源,AQS定义了两种资源的占用方式:    1、独占模式(EXCLUSIVE):表示同一个资源,在同一时刻只能被一个线程持有,例如ReentrantLock等;    2、共享模式(SHARED):表示同一个资源,在同一时刻可以被多个线程同时持有,例如Semaphor

(原创)多线程并发:AQS源码分析(1)——独占锁的实现原理

  谈到java中的并发,我们就避不开线程之间的同步和协作问题,谈到线程同步和协作我们就不能不谈谈jdk中提供的AbstractQueuedSynchronizer(翻译过来就是抽象的队列同步器)机制;  (一)、AQS中的state和Node含义:    AQS中提供了一个intvolatilestate状态的变量用来标识共享资源,AQS定义了两种资源的占用方式:    1、独占模式(EXCLUSIVE):表示同一个资源,在同一时刻只能被一个线程持有,例如ReentrantLock等;    2、共享模式(SHARED):表示同一个资源,在同一时刻可以被多个线程同时持有,例如Semaphor

AQS探究

总所周知,javaconcurrent包的工具类是构建在AbstractQueuedSynchronizer类上的基础上的,而这个类是DougLea大神基于CHL队列实现的同步器。这个强大的同步器是怎样实现的呢?我们来一探究竟。因为AQS的代码比较难以理解,我们从concurrent包下的并发工具类着手开始研究。从最简单的CountDownLatch开始,首先看它的源码publicclassCountDownLatch{/***SynchronizationcontrolForCountDownLatch.*UsesAQSstatetorepresentcount.*/privatestati

AQS探究

总所周知,javaconcurrent包的工具类是构建在AbstractQueuedSynchronizer类上的基础上的,而这个类是DougLea大神基于CHL队列实现的同步器。这个强大的同步器是怎样实现的呢?我们来一探究竟。因为AQS的代码比较难以理解,我们从concurrent包下的并发工具类着手开始研究。从最简单的CountDownLatch开始,首先看它的源码publicclassCountDownLatch{/***SynchronizationcontrolForCountDownLatch.*UsesAQSstatetorepresentcount.*/privatestati