2012-09-11 37 views
-3

请指教java.util.concurrent.atomic包是否是实现同步的另一种替代方法假设有一个变量,并且有10个不同的线程将其递增,那么原子整数在上下文中的作用是什么的同步..!Atomic integer vs syncronization

+0

'AtomicInteger'保证所有线程的原子性和可见性。它比通过对变量的所有访问使用“synchronized”作为内存屏障的延迟要低;既支持更复杂的原子操作而不仅仅是分配和访问,例如递增(不像'volatile int')。 – oldrinb

+0

@oldrinb能见度从哪里来? –

+0

@MattBall [请参阅java.util.concurrent.atomic的规范](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/package-summary.html) ...“'get'具有读取'volatile'变量的记忆效应......'set'具有写入(分配)volatile变量的记忆效应。 – oldrinb

回答

2

如果你只有一个整数来递增,那么是的 - AtomicInteger可以让你在没有同步的情况下轻松,高效和健壮地实现这一点。

如果你需要做更多的事 - 例如,如果你实际上需要更新不止一个变量,对他们的需要进行更新,作为一个单元,然后你会想使用同步。