java atomic-long

¿Para qué se utiliza AtomicLong en Java?



atomic-long (1)

Existen diferencias significativas entre estos dos objetos, aunque el resultado neto es el mismo, definitivamente son muy diferentes y se utilizan en circunstancias muy diferentes.

Utiliza un objeto Long básico cuando:

  • Necesitas la clase envoltura.
  • Estás trabajando con una colección.
  • Solo desea tratar con objetos y no con primitivos (lo que funciona)

Utiliza un AtomicLong cuando:

  • Tiene que garantizar que el valor se puede utilizar en un entorno concurrente
  • No necesita la clase contenedora (ya que esta clase no hará autobox)

Long por sí solo no permite la interoperabilidad de subprocesos, ya que dos subprocesos podrían ver y actualizar el mismo valor, pero con un AtomicLong , existen garantías bastante decentes sobre el valor que verán varios subprocesos.

Efectivamente, a menos que se moleste en trabajar con subprocesos, no necesitará usar AtomicLong .

¿Alguien puede explicar para qué se utiliza AtomicLong? Por ejemplo, ¿cuál es la diferencia en las siguientes afirmaciones?

private Long transactionId; private AtomicLong transactionId;