LMAX Disruptor"入门" ...
的示例代码public class LongEvent
{
private long value;
public void set(long value)
{
this.value = value;
}
}
参考:https://github.com/LMAX-Exchange/disruptor/wiki/Getting-Started
为什么不将private long value
声明为volatile
?
我问,因为隐含于Disruptor模式,数据在线程(生产者 - >消费者)之间共享。
我的猜测:生产者和消费者线程之间已经存在(至少)一个内存栅栏。
答案 0 :(得分:3)
你可以在Sequence类中看到putOrderedLong()compareAndSet()等等。每个都强制执行内存排序。
有关详细信息,请参阅source code。