【实战Java高并发程序设计 1】Java中的指针:Unsafe类【实战Java高并发程序设计 2】无锁的对象引用:AtomicReference【实战Java高并发程序设计 3】带有时间戳的对象引用:AtomicStampedReference【实战Java高并发程序设计 4】 ...
【实战Java高并发程序设计 1】Java中的指针:Unsafe类
【实战Java高并发程序设计 2】无锁的对象引用:AtomicReference
【实战Java高并发程序设计 3】带有时间戳的对象引用:AtomicStampedReference
【实战Java高并发程序设计 4】数组也能无锁:AtomicIntegerArray
【实战Java高并发程序设计 5】让普通变量也享受原子操作
【实战Java高并发程序设计6】挑战无锁算法:无锁的Vector实现
在对线程池的介绍中,提到了一个非常特殊的等待队列SynchronousQueue。SynchronousQueue的容量为0,任何一个对SynchronousQueue的写需要等待一个对SynchronousQueue的读,反之亦然。因此,SynchronousQueue与其说是一个队列,不如说是一个数据交换通道。那SynchronousQueue的其妙功能是如何实现的呢?
既然我打算在这一节中介绍它,那么SynchronousQueue比如和无锁的操作脱离不了关系。实际上SynchronousQueue内部也正是大量使用了无锁工具。
对SynchronousQueue来说,它将put()和take()两个功能截然不同的操作抽象为一个共通的方法Transferer.transfer()。从字面上看,这就是数据传递的意思。它的完整签名如下:
Object transfer(Object e, boolean timed, long nanos)
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:【实战Java高并发程序设计 7】让线程之间互相帮助
关键词:JAVA
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。