FutureTask中的waiters为啥这么设计( 二 )

当需要入队时,进行 UNSAFE.compareAndSwapObject(this, waitersOffset, q.next = waiters, q)操作,即CAS(waiters, q), 无锁更新waiters的头为q,完成入队;
类似的出队操作removeWaiter也是如此。
出入队操作,题主均可对照Treiber Stack - Wikipedia 中的例子,找到对应。

■网友
【FutureTask中的waiters为啥这么设计】 终于看到有人跟我有一样的疑问了,楼主现在有解了吗


推荐阅读