Atómico

Fiabilidad

¿Qué significa atómico?

Atómico es un conjunto de clases variables del paquete java.util.concurrent.atomic, que ayudan a escribir algoritmos sin bloqueos ni esperas con el lenguaje Java. Un algoritmo que sólo requiere hilos parciales para un progreso constante está libre de bloqueos.

En un algoritmo sin espera, todos los hilos progresan continuamente, incluso en caso de fallo o retraso de los hilos. Los algoritmos sin bloqueo y sin espera también se conocen como algoritmos sin bloqueo.

Los algoritmos no bloqueantes se utilizan para programar procesos e hilos a nivel del sistema operativo y de la máquina virtual Java.

Definición de atómico

Todas las clases del paquete java.util.concurrent.atomic tienen el prefijo “atomic” en sus nombres. Hay distintos tipos de variables atómicas disponibles en el paquete java.util.concurrent.atomic, entre ellos:

  • AtomicBoolean
  • AtomicInteger
  • AtomicIntegerArray
  • AtomicIntegerFieldUpdater
  • AtomicLong
  • AtomicLongArray
  • Actualizador de campos AtomicLongFieldUpdater
  • AtomicReference

En el lenguaje Java, la sincronización coordina el acceso a los campos compartidos por los hilos y sólo permite a los hilos que tienen bloqueos acceder a las variables protegidas por el bloqueo y modificarlas. Las modificaciones de este hilo son visibles para el hilo que le sigue, pero sólo después de que el hilo libere el bloqueo.

Un ejemplo es una situación en la que el subproceso A tiene un bloqueo. A sólo puede acceder y modificar las variables protegidas por este bloqueo. Si el hilo B mantiene este bloqueo después de A, sólo B podrá ver los cambios de A en las variables protegidas por ese bloqueo concreto. El principal problema del bloqueo se produce cuando B intenta adquirir un bloqueo que posee A. En este caso, B se bloquea para esperar hasta que el bloqueo esté disponible. Los algoritmos de no bloqueo resuelven este problema.

El objetivo principal de crear clases atómicas es implementar estructuras de datos no bloqueantes y sus clases de infraestructura relacionadas. Las clases atómicas no sirven para sustituir a java.lang.Integer y clases relacionadas.

La mayoría de las clases del paquete java.util.concurrent utilizan variables atómicas en lugar de sincronización, directa o indirectamente. Las variables atómicas también se utilizan para conseguir un mayor rendimiento, lo que significa un mayor rendimiento del servidor de aplicaciones.

Temas relacionados

Margaret Rouse
Technology expert
Margaret Rouse
Experta en tecnología

Margaret Rouse es una galardonada escritora técnica y profesora conocida por su habilidad para explicar temas técnicos complejos a una audiencia de negocios no técnica. Durante los últimos veinte años, sus explicaciones han aparecido en sitios web de TechTarget y ha sido citada como autoridad en artículos del New York Times, Time Magazine, USA Today, ZDNet, PC Magazine y Discovery Magazine. La idea de diversión de Margaret es ayudar a profesionales de TI y negocios a aprender a hablar los idiomas altamente especializados de cada uno. Si tienes una sugerencia para una nueva definición o cómo mejorar una explicación técnica,…