Unsafe.CAS、jol查看偏移量
AQS#compareAndSetState
#AbstractQueuedSynchronizer
protected final boolean compareAndSetState(int expect, int update) {
// See below for intrinsics setup to support this
return unsafe.compareAndSwapInt(this, stateOffset, expect, update);
}
这里的stateOffset(偏移量),可以根据它获取属性state值
private static final Unsafe unsafe = Unsafe.getUnsafe();
private static final long stateOffset;
// 省略...
private static final long waitStatusOffset;
static {
try {
stateOffset = unsafe.objectFieldOffset (AbstractQueuedSynchronizer.class.getDeclaredField("state"));
headOffset = unsafe.objectFieldOffset
waitStatusOffset = unsafe.objectFieldOffset
(Node.class.getDeclaredField("waitStatus"));
} catch <