AQS-await()方法中的acquireQueued()方法为什么使用savedState做参数
acquireQueued(node, savedState)方法是用来把节点加入到对同步状态的竞争,node参数代表节点,savedState参数代表着要获取的同步状态数,那么问题来了,这里的同步状态数目为什么是savedState呢?
其实答案很简单,savedState是fullyRelease(node)方法的返回值,该值其实就是当前线程锁持有的同步状态数,释放了多少的同步状态数,那么下次要去竞争同步状态时,就会去竞争和之前释放的同步状态数一样的数目。对于释放出同步状态的线程来说,失去的同步状态,在竞争时,它会一一的拿回来。所以这就是await()方法中的acquireQueued()方法使用savedState做参数的原因。