dab*_*aba 5 java concurrency multithreading synchronization mutex
我可以看到,ReentrantLock快于50%左右synchronized,并AtomicInteger快100%.为什么这三种同步方法的执行时间存在差异:synchronized块ReentrantLock和AtomicInteger(或Atomic包中的任何类).
除了这些之外还有其他流行的和扩展的同步方法吗?
影响这一点的因素有很多.
AtomicInteger使用与锁定使用相同的原语但执行繁忙等待.CompareAndSet也称为CompareAndSwap,即它的功能更简单(并且更加有限)
ConcurrentXxxx,CopyOnWriteArrayXxxx系列非常受欢迎.这些提供并发性而无需直接使用锁(在某些情况下根本没有锁)
AtomicInteger比硬件上的其他两种同步方法快得多,因为它是无锁的.在CPU提供无锁并发基本功能的体系结构中,AtomicInteger操作完全在硬件中执行,关键操作通常只需要一条CPU指令.相反,ReentrantLock并synchronized使用多个指令来执行它们的任务,因此您会看到与它们相关的一些可观的开销.