アトミック整数incrementAndGet()メソッドはスレッドセーフですか?私はそれに同期キーワードの使用が表示されません。ユニークなIDを生成するためのメソッドを呼び出すと、複数のスレッドがすべての問題につながる場合、私は放浪していますAtomic Integer incrementAndGet()はスレッドセーフですか?
public enum UniqueIdGenerator {
INSTANCE;
private AtomicLong instance = new AtomicLong(System.currentTimeMillis());
public long incrementAndGet() {
return instance.incrementAndGet();
}
}
:私は、一意のIDを生成するには、次のコードを使用していますか?
UniqueIdGenerator.INSTANCE.incrementAndGet()
ありがとう!
はいです。そして、AtomicLongもそうです。 –
https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/package-summary.html。これは、AtomicIntegerのjavadocの最初の文からリンクされています。そして、それは言います:*単一の変数でロックフリーのスレッドセーフなプログラミングをサポートするクラスの小さなツールキット* –
スレッドセーフであるだけでなく、実際にスレッド安全性がそれを使用する唯一の理由です単純なint型)。 – yshavit