Sobes.tech
Middle

Quelle est l'essence de l'utilisation de ReadWriteLock?

sobes.tech IA

Réponse de l'IA

ReadWriteLock permet à plusieurs threads de lire simultanément une ressource partagée, mais seulement à un thread d’écrire en même temps. Cela améliore la performance dans les scénarios où la lecture est plus fréquente que l’écriture.

Composants principaux:

  • Read Lock: Peut être détenu par plusieurs threads simultanément.
  • Write Lock: Ne peut être détenu que par un seul thread. Bloque à la fois les autres écrivains et lecteurs.

Un comportement similaire sans ReadWriteLock nécessiterait l’utilisation de synchronized ou ReentrantLock, ce qui bloquerait toutes les opérations (lecture et écriture) pendant que un thread détient le verrou.

Exemple d’utilisation:

import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;

class SharedResource {
    private final ReadWriteLock rwLock = new ReentrantReadWriteLock();
    private String data = "Initial Data";

    public String readData() {
        rwLock.readLock().lock(); // Acquisition du verrou de lecture
        try {
            // Lecture des données
            return data;
        } finally {
            rwLock.readLock().unlock(); // Libération du verrou de lecture
        }
    }

    public void writeData(String newData) {
        rwLock.writeLock().lock(); // Acquisition du verrou d’écriture
        try {
            // Écriture des données
            this.data = newData;
        } finally {
            rwLock.writeLock().unlock(); // Libération du verrou d’écriture
        }
    }
}