Java多线程之深入理解ReentrantLock
acquireQueued方法将会在第三章中讲解,先来看tryAcquire方法的内容。这是一个volatile变量,当其为0时,表示没有任何线程占用锁。线程通过CAS将state从0置为1进行加锁,当线程持有锁的情况下,再次进行加锁,会将state加1,即重入。当线程尝试加锁失败时,通过CAS操作将自身追加到链表尾部。之所以没有将这些方法设计成为抽象方法,是因为AQS的子类可能只需要实现其中的某些方法即可实现其功能。
acquireQueued方法将会在第三章中讲解,先来看tryAcquire方法的内容。这是一个volatile变量,当其为0时,表示没有任何线程占用锁。线程通过CAS将state从0置为1进行加锁,当线程持有锁的情况下,再次进行加锁,会将state加1,即重入。当线程尝试加锁失败时,通过CAS操作将自身追加到链表尾部。之所以没有将这些方法设计成为抽象方法,是因为AQS的子类可能只需要实现其中的某些方法即可实现其功能。