util initialize how concurrent atomicinteger java integer

concurrent - how to initialize atomicinteger in java



Incremento de AtomicInteger (2)

¿Qué sucede si AtomicInteger alcanza Integer.MAX_VALUE y se incrementa?

¿El valor vuelve a cero?


Trayendo el código fuente, solo tienen un

private volatile int value;

y, y varios lugares, agregan o restan de él, por ejemplo, en

public final int incrementAndGet() { for (;;) { int current = get(); int next = current + 1; if (compareAndSet(current, next)) return next; } }

Por lo tanto, debe seguir las matemáticas enteras estándar de Java y envolverlas en Integer.MIN_VALUE. Los JavaDocs para AtomicInteger guardan silencio sobre el tema (por lo que vi), así que supongo que este comportamiento podría cambiar en el futuro, pero parece extremadamente improbable.

Hay un AtomicLong si eso ayudaría.

vea también ¿Qué sucede cuando incrementa un número entero más allá de su valor máximo?


Ver por ti mismo:

System.out.println(new AtomicInteger(Integer.MAX_VALUE).incrementAndGet()); System.out.println(Integer.MIN_VALUE);

Salida:

-2147483648 -2147483648

Parece que se ajusta a MIN_VALUE.