dim*_*414 11 java multithreading synchronization
在过去的几分钟里,我一直在为自己辩论,而且我看到了是和否的原因.这源于查看Java HashMap与Hashtable的答案,并看到有几个人说Hashtable实际上更慢.
在我看来,如果在单个线程中运行,同步方法应该与其非同步方法完全没有区别,因为同步操作不应该阻塞任何内容.也就是说,我认为编译器会以不同的方式处理这两种情况,这就是人们说同步速度较慢的原因.
并不是说它无论如何都是决定性的,但是我对HashMap和Hashtable进行了一些简单的测试,并且看到了速度上的差别.
Edd*_*die 15
是的,使用同步的单线程Java程序可能比没有同步时稍慢.对于早期Java版本,同步很昂贵.但是,对于任何现代版本,无竞争同步都相当便宜.我不担心这个.
请注意,Java 6和Java 7在锁定方面有很好的优化:
有关更多信息,请参阅Java SE 6性能白皮书.另请注意,多核CPU上的无竞争同步似乎比单核CPU上更昂贵,可能是由于Java内存模型要求同步强制本地CPU高速缓存与其他CPU或其他内存屏障共享.例如,阅读Do Do Java 6线程优化实际上有效吗?- 第二部分.(第一部分不如第二部分那么富有洞察力.)
| 归档时间: |
|
| 查看次数: |
5177 次 |
| 最近记录: |