requisitos que publico para materias hace gana estudiar dificil cuanto contadores contador contabilidad carrera beneficios java synchronization counter increment

java - que - ¿Necesita sincronización para un contador de solo incremento?



que hace un contador (1)

Si solo usó una variable int o long , entonces necesitaría sincronización: el incremento implica la lectura / incremento local / escritura, que está lejos de ser una operación atómica. (Incluso si la variable es volatile para evitar problemas de estancamiento en el modelo de memoria, todavía tendrías tres operaciones distintas, con la posibilidad de ser anticipado entre cualquier par de ellas).

Afortunadamente, Java proporciona AtomicInteger y AtomicLong que se pueden usar sin ninguna sincronización:

private final AtomicLong counter = new AtomicLong(); ... counter.incrementAndGet(); // No need for synchronization

Yo uso un entero como contador. El número entero solo se incrementará, y seguramente más de un hilo lo aumentará al mismo tiempo. El valor de este contador se lee al final de la ejecución del programa cuando ningún otro subproceso intentará acceder a su valor.

Supongo que no tengo que usar un bloqueo ni ningún tipo de sincronización para este tipo de contador de solo incremento. ¿Es esto correcto? Codifico en Java si eso hace alguna diferencia.