17
A
回答
32
見自己:
System.out.println(new AtomicInteger(Integer.MAX_VALUE).incrementAndGet());
System.out.println(Integer.MIN_VALUE);
輸出:
-2147483648
-2147483648
看起來它確實包裹到MIN_VALUE。
6
褐變的源代碼,他們只是有一個
private volatile int value;
和,並且不同的地方,它們添加或從中減去它,例如在
public final int incrementAndGet() {
for (;;) {
int current = get();
int next = current + 1;
if (compareAndSet(current, next))
return next;
}
}
因此,它應該遵循標準的Java整數數學運算並將其包裝到Integer.MIN_VALUE。 AtomicInteger的JavaDocs對此事保持沉默(從我所看到的),所以我猜這種行爲在未來可能會改變,但這似乎不太可能。
有一個AtomicLong,如果這將有所幫助。
也看到What happens when you increment an integer beyond its max value?
相關問題
- 1. 的AtomicInteger增量不表現爲預期
- 2. 的AtomicInteger在threadDefaultFactory
- 3. AtomicInteger的屬性
- 4. AtomicInteger和Math.max
- 5. AtomicInteger轉換爲int
- 6. Java AtomicInteger getAndIncrement()和compareAndSet
- 7. AtomicInteger循環計算
- 8. AtomicInteger vs synchronized getters/setters
- 9. 如何使用AtomicInteger?
- 10. 遞增/遞減button.onclicklistener
- 11. MySQL自動遞增不遞增
- 12. 在Bash中遞增遞增量
- 13. AtomicInteger的實際應用
- 14. AtomicInteger比同步更慢
- 15. 的getAndIncrement實施的AtomicInteger
- 16. Java - 使用AtomicInteger vs Static int
- 17. 遞增值成倍增加
- 18. 的遞增ID
- 19. 遞增ngClass值
- 20. 遞增會話
- 21. 理解遞增
- 22. 雙倍遞增
- 23. 遞增時鐘
- 24. 遞增繪圖
- 25. 遞增在VTL
- 26. 遞增數組
- 27. 遞增斜
- 28. 遞增變量
- 29. 指針遞增
- 30. 遞增變量
您可以輕鬆地嘗試通過設置一個整數到最大值然後遞增它。 – Gabe 2011-12-15 00:59:27