Synchronisation des threads

Définition - Que signifie la synchronisation des threads?

La synchronisation des threads est l'exécution simultanée de deux threads ou plus qui partagent des ressources critiques. Les threads doivent être synchronisés pour éviter les conflits d'utilisation des ressources critiques. Sinon, des conflits peuvent survenir lorsque des threads exécutés en parallèle tentent de modifier une variable commune en même temps.

Definir Tech explique la synchronisation des threads

Pour clarifier la synchronisation des threads, considérons l'exemple suivant: trois threads - A, B et C - sont exécutés simultanément et doivent accéder à une ressource critique, Z. Pour éviter les conflits lors de l'accès à Z, les threads A, B et C doivent être synchronisés . Ainsi, lorsque A accède à Z et que B essaie également d'accéder à Z, l'accès de B à Z doit être évité avec des mesures de sécurité jusqu'à ce que A termine son opération et sort de Z.

En Java, deux stratégies de synchronisation sont utilisées pour éviter les interférences de thread et les erreurs de cohérence de la mémoire:

  • Méthode synchronisée: inclut le mot-clé synchronized dans sa déclaration. Lorsqu'un thread appelle une méthode synchronisée, la méthode synchronisée acquiert automatiquement le verrou intrinsèque de l'objet de cette méthode et le libère lorsque la méthode retourne, même si ce retour a été provoqué par une exception non interceptée.
  • Instruction synchronisée: déclare un bloc de code à synchroniser. Contrairement aux méthodes synchronisées, les instructions synchronisées doivent spécifier les objets qui fournissent le verrou intrinsèque. Ces instructions sont utiles pour améliorer la concurrence avec une synchronisation fine, car elles permettent d'éviter les blocages inutiles.