Disruptor 0.1 相关知识及预热

1.Disruptor为什么快

http://ifeve.com/locks-are-bad/

2.关于synchronized关键字

因为Java虚拟机的优化,现在synchronized已经没有之前想象的那么慢了。具体参见:http://ifeve.com/java-synchronized/

在Disruptor为什么快的问题上,博客里指出了一个实验,即

“Disruptor论文中讲述了我们所做的一个实验。这个测试程序调用了一个函数,该函数会对一个64位的计数器循环自增5亿次。当单线程无锁时,程序耗时300ms。如果增加一个锁(仍是单线程、没有竞争、仅仅增加锁),程序需要耗时10000ms,慢了两个数量级。更令人吃惊的是,如果增加一个线程(简单从逻辑上想,应该比单线程加锁快一倍),耗时224000ms。使用两个线程对计数器自增5亿次比使用无锁单线程慢1000倍。并发很难而锁的性能糟糕。

说明即使没有竞争,仅仅加锁也很耗时。但是其实现在已经有改观了,synchronized关键字的底层实现引入了偏向锁和轻量级锁(自旋),所以性能没有之前那么差,这些可以在上面的文章中找到答案。

猜你喜欢

转载自blog.csdn.net/xxcupid/article/details/88873120