SynchronousQueue 源码初步分析

阅读更多
简介:
就是一个 put 操作必须和 take 操作对应. 如果一下来了三个 put 操作,那么结果是这样的:

head->put1->put2->put3.

put1/put2/put3 都自旋一小会,如果还没有 take 来的话,就都调用 LockSupport.part 自我阻塞.


实现原理:

基于队列的实现原理:

还是上面的那个例子,假设一次性来了三个 put 操作,那么结果是这样的:

head->put1->put2->put3.

现在假设来了一个 take 操作,那么对首出队,唤醒第一个节点的线程. put1 这个操作就能够继续执行了.

数据结构:

因为 SynchronousQueue 把和执行 put 操作的线程放在了数据结构中了,所以当这个线程被阻塞的时候,take 就能唤醒指定的线程.

你可能感兴趣的:(SynchronousQueue 源码初步分析)