Tabla de contenido:
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 de bloqueo y sin esperas con el lenguaje Java. Un algoritmo que requiere solo subprocesos parciales para un progreso constante no tiene bloqueo. En un algoritmo sin esperas, todos los hilos avanzan continuamente, incluso en casos de falla o retraso del hilo. Los algoritmos de bloqueo y sin espera también se conocen como algoritmos sin bloqueo. Los algoritmos sin bloqueo se utilizan para la programación de procesos y subprocesos en los niveles del sistema operativo y la máquina virtual Java.
Techopedia 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:
- AtomicBoolean
- Entero atómico
- AtomicIntegerArray
- AtomicIntegerFieldUpdater
- AtomicLong
- AtomicLongArray
- AtomicLongFieldUpdater
- Referencia atómica
Un ejemplo es un escenario en el que el hilo A mantiene un bloqueo. 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 objetivo 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 usan 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.