Question

Juste une petite question à propos ReadWriteLocks en Java (en particulier la mise en œuvre de ReentrantReadWriteLock) que je ne trouve pas la documentation du soleil clair.

Qu'est-ce qui se passe si un verrou de lecture est maintenu par un fil quand un verrou d'écriture est demandée par un autre? Est-ce que le fil de verrouillage d'écriture doivent attendre que tous les verrous de lecture actuellement détenus à être libérés? En outre, faire toutes les nouvelles demandes de verrouillage lecture bloqués jusqu'à ce que le verrouillage en écriture est accordée et libéré?

Merci

Était-ce utile?

La solution

Le Javadoc explique ceci:

  

Cette classe n'impose pas un lecteur   ou écrivain préférence pour la commande   de verrouiller l'accès. Cependant, il prend en charge   une équité en option   politique. Lorsque construit comme juste,   threads soutiennent d'entrée en utilisant un   environ la politique arrivée ordre.   Lorsque le verrou d'écriture est libéré   soit la plus longue attente unique   écrivain sera affecté l'écriture   verrouiller, ou s'il y a un lecteur en attente   plus que tout écrivain, l'ensemble des   les lecteurs seront affectés à la lecture   fermer à clé. Lorsque construit comme non équitable,   l'ordre d'entrée à la nécessité de verrouillage   pas en ordre d'arrivée. Dans les deux cas   cas, si les lecteurs sont actifs et   écrivain entre dans la serrure alors pas   lecteurs ultérieurs seront accordés   le verrou de lecture jusqu'à ce que l'écrivain   a acquis et libéré l'écriture   verrouiller.


  

Qu'est-ce qui se passe si un verrou de lecture est maintenu par un fil quand un verrou d'écriture est demandée par un autre? Est-ce que le fil de verrouillage d'écriture doivent attendre que tous les verrous de lecture actuellement détenus à être libérés?

Oui, l'auteur devra attendre. Mais il n'attendre que les verrous en lecture actuellement détenus. Tous les lecteurs qui arrivent plus tard après la file d'attente sera l'auteur.

  

En outre, faire toutes les nouvelles demandes de verrouillage lecture bloqués jusqu'à ce que le verrouillage en écriture est accordée et libéré?

Oui

Autres conseils

Un ReadWriteLock ne peut pas avoir un verrou d'écriture a eu lieu en même temps que les verrous de lecture. Les demandes de, disons, un verrou d'écriture quand un verrou de lecture est maintenue entraînera le blocage ou un échec.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top