AQS-节点的起始状态0是怎么来的,为什么要有0这个状态?

首先看下代表节点状态的是哪个字段:
AQS-节点的起始状态0是怎么来的,为什么要有0这个状态?
这时候可以发现waitStatusint类型,默认值自然就为0了。

所以这时候就可以先知道,为什么节点的起始状态是0。那么接下来看一段代码:
AQS-节点的起始状态0是怎么来的,为什么要有0这个状态?
AQS-节点的起始状态0是怎么来的,为什么要有0这个状态?
从以上截图可以发现,当ws的值是0时,会走进else中的逻辑,通过CAS把0设置为-1,那为什么不一开始就设置为-1呢,还要多出这一步?

这里分享一个简单的理解思路,状态存在即是合理,会不会有一些方法,是在节点状态值为0时需要调用的?而正是因为有一些方法是需要在状态值为0时被调用,所以才会保留有0这个状态。