Atómico

Definición - ¿Qué significa Atómico?

Atomic es un conjunto de herramientas de clases de paquetes variables java.util.concurrent.atomic, que ayudan a escribir algoritmos sin bloqueo y sin espera con el lenguaje Java. Un algoritmo que requiere solo subprocesos parciales para un progreso constante no tiene bloqueos. En un algoritmo sin espera, todos los subprocesos progresan continuamente, incluso en casos de falla o retraso del subproceso. Los algoritmos de bloqueo y sin espera también se conocen como algoritmos de no bloqueo. Los algoritmos sin bloqueo se utilizan para la programación de procesos y subprocesos a nivel del sistema operativo y de la máquina virtual Java.

Techinfo explica Atomic

Todas las clases de paquetes java.util.concurrent.atomic tienen el prefijo "atómico" en sus nombres. Hay diferentes tipos de variables atómicas disponibles en el paquete java.util.concurrent.atomic, que incluyen:

  • AtómicoBooleano
  • AtomicInteger
  • AtomicIntegerArray
  • AtomicIntegerFieldUpdater
  • AtomicLong
  • AtomicLongArray
  • AtomicLongFieldUpdater
  • AtomicReference

En el lenguaje Java, la sincronización coordina el acceso a los campos de subprocesos compartidos y solo permite que los subprocesos que tienen bloqueos accedan y modifiquen las variables protegidas por el candado. Las modificaciones de este hilo son visibles para el hilo que sigue, pero solo después de que el hilo libera el bloqueo.
Un ejemplo es un escenario donde el hilo A mantiene un candado. A solo puede acceder y realizar cambios en las variables protegidas por este bloqueo. Si el hilo B mantiene este bloqueo después de A, entonces solo B puede ver los cambios de A en las variables protegidas por ese bloqueo en particular. El principal problema con el bloqueo ocurre cuando B intenta adquirir un bloqueo retenido por A. En este caso, B está bloqueado para esperar hasta que el bloqueo esté disponible. Los algoritmos sin bloqueo resuelven este problema.

El propósito principal detrás de la construcción de clases atómicas es implementar estructuras de datos sin bloqueo y sus clases de infraestructura relacionadas. Las clases atómicas no sirven como reemplazos para java.lang.Integer y clases relacionadas. La mayoría de las clases de paquetes java.util.concurrent utilizan variables atómicas en lugar de sincronización, ya sea directa o indirectamente. Las variables atómicas también se utilizan para lograr un mayor rendimiento, lo que significa un mayor rendimiento del servidor de aplicaciones.

Esta definición fue escrita en el contexto de Java