Volatile

Définition - Que signifie volatile?

Volatile est un mot clé dans le langage de programmation Java qui spécifie qu'une variable membre associée à une classe peut être modifiée de manière asynchrone par plusieurs threads. Le mot-clé volatile dans le code agit comme un modificateur lorsqu'un membre est déclaré. Les mots clés sont des mots fondamentalement réservés avec une signification distincte dans le contexte d'un compilateur.

Le mot-clé volatile est utilisé chaque fois que la variable signifie une sorte de variable qui dépend de l'environnement ou du système, comme des compteurs simples et des horloges.

Definir Tech explique Volatile

Le mot-clé volatile garantit que chaque accès en lecture à une variable membre renvoie la valeur la plus récente de celle-ci. Cela n'est pas efficace lorsque les modifications récentes sont effectuées à l'aide d'un thread différent. Si une variable membre n'est pas déclarée comme volatile, un thread ne pourra pas reconnaître les modifications qui lui sont apportées en utilisant un thread différent.

Pour un membre double ou long, le mot clé volatile garantit également que la machine virtuelle ne générera pas deux écritures 32 bits successives, mais créera une seule écriture 64 bits à la place. Si cela n'est pas possible, l'implémentation de la JVM continue d'assurer l'atomicité de cette fonction afin que l'ancienne moitié inférieure ne soit pas lue avec la nouvelle moitié supérieure d'un certain double ou long volatile.

Les écritures et lectures volatiles établissent une relation qui se produit avant. Avant d'accéder à un objet volatil, une synchronisation se produit entre la mémoire principale et les variables mises en cache, tout comme elle se produit avant d'entrer ou après avoir quitté un bloc synchronisé. Cela implique qu'un objet volatile peut être publié en toute sécurité sans synchronisation; autrement dit, lorsqu'un objet volatile est accédé par un thread, les membres de cet objet sont également mis à jour.

Lorsqu'une variable est décrite comme volatile, JVM et le compilateur Java effectuent les deux opérations suivantes.

  1. Le compilateur ne parvient pas à maximiser les instructions et expressions liées à cette variable.
  2. JVM synchronise la variable.

Les avantages du volatil sont les suivants:

  • C'est léger
  • Cela entraîne une très faible surcharge de lecture et d'écriture, mais est toujours plus rapide que le verrouillage.
  • Volatile résiste aux verrous morts.