ReentrantLock

Condition - l'application de conditions dans les verrous vous permet de contrôler la gestion de l'accès aux flux. La condition de verrouillage est un objet de l' interface Condition dujava.util.concurrent.locks. L'utilisation d'objets Condition est à bien des égards similaire à l'utilisation deswait/notify/notifyAllclasse Object , qui ont été abordées dans l'une des rubriques précédentes.

Lock est une interface ducadre de verrouillagequi fournit une approche flexible pour restreindre l'accès aux ressources/blocs par rapport à la synchronisation. Lors de l'utilisation de plusieurs verrous, l'ordre de leur libération peut être arbitraire, et il peut également être configuré. Il est également possible de gérer la situation lorsque le verrou est déjà capturé.

ReentrantLock est l'une des implémentations de l' interface Lock , la classe. Il permet au même thread d'appeler la méthode de verrouillage, même s'il l'a déjà appelée, sans libérer le verrou.

La classe ReentrantLock , en plus des méthodes de l'interface Lock , possède une méthode de fabrique newCondition() . Cette méthode retourne un objetCondition, qui vous permet d'ajouter le thread actuel au jeu d'attente de l'objet donnéCondition.

private final Lock R_LOCK = ReentrantLock();
R_LOCK.lock();
try {
   //some action happens here
} finally {
   R_LOCK.unlock();
}

ReadWriteLock est une interface pour créer des verrous en lecture/écriture. Les verrous sont extrêmement utiles lorsqu'un système a beaucoup de lectures et peu d'écritures.

ReentrantReadWriteLock - utilisé dans les services et les caches multithreads, offre une belle amélioration des performances par rapport aux blocs synchronisés. En fait, la classe fonctionne selon 2 modes mutuellement exclusifs : plusieurs lecteurs lisent des données en parallèle et lorsqu'un seul écrivain écrit des données.

ReentrantReadWriteLock.ReadLock - verrou de lecture pour les lecteurs, obtenu via readWriteLock.readLock().

ReentrantReadWriteLock.WriteLock - verrou en écriture pour les écrivains, obtenu via readWriteLock.writeLock().

Synchroniseur

AbstractOwnableSynchronizer est la classe de base responsable de la construction des mécanismes de synchronisation. Contient un getter/setter pour mémoriser et lire un flux exclusif qui peut opérer sur vos données.

AbstractQueuedSynchronizer est la classe de base du mécanisme de synchronisation dans FutureTask, CountDownLatch, Semaphore, ReentrantLock, ReentrantReadWriteLock. Il est également utilisé lors de la création de nouveaux mécanismes de synchronisation qui reposent sur une seule valeur int atomique.

AbstractQueuedLongSynchronizer est une variante de AbstractQueuedSynchronizer qui prend en charge la valeur longue atomique.