看完AQS acquire-release和acquireShare-release两部分的实现逻辑。但是仍然理不清AQS内部属性的变化和管理。如AQS内部资源的变化,内部阻塞队列的个数,内部持有线程的唤醒与阻塞的实时变化。
下面把个人理解AQS独占锁(资源数为1)的时序图粘贴出来供大家理解使用,描述了几个线程在竞争时候AQS内部属性的变化和管理。
原图地址
看完AQS acquire-release和acquireShare-release两部分的实现逻辑。但是仍然理不清AQS内部属性的变化和管理。如AQS内部资源的变化,内部阻塞队列的个数,内部持有线程的唤醒与阻塞的实时变化。
下面把个人理解AQS独占锁(资源数为1)的时序图粘贴出来供大家理解使用,描述了几个线程在竞争时候AQS内部属性的变化和管理。
原图地址