2010-04-25 3 views
0

J'ai regardé autour pour la réponse à ceci, mais aucune joie. En Java, utilise-t-on le verrou créé par ReentrantReadWriteLock pour obtenir les verrous de lecture et d'écriture renvoyés par readLock.lock() et writeLock.lock()? En d'autres termes, puis-je m'attendre à ce que les verrous de lecture et d'écriture associés au ReentrantReadWriteLock soient demandés et conservés en synchronisant sur le ReentrantReadWriteLock? Mon instinct dit "non" puisque tout objet peut être utilisé pour la synchronisation. Je ne pense pas qu'il y aurait un comportement spécial pour ReentrantReadWriteLock. Cependant, un comportement spécial est le cas d'angle dont je ne suis peut-être pas conscient.Un verrou renvoyé par ReentrantReadWriteLock est-il équivalent à ses verrous en lecture et en écriture?

Merci, Todd

+1

En regardant à travers la source, le verrou intrinsèque de 'ReentrantReadWriteLock' ne semble pas avoir d'effet sur' readLock' et 'writeLock'. Donc, votre instinct semble être juste. –

+0

@binil Si vous postez votre commentaire en guise de réponse, je le sélectionnerai. Bien que l'autre réponse affichée soit techniquement correcte, elle n'a pas répondu directement à ma question. Merci. – Todd

Répondre

1

java.util.concurrent.locks et le support de verrouillage dans le langage Java sont des mécanismes complètement séparés.

Certains outils d'analyse statique signaleront en essayant d'utiliser synchronized sur un objet Lock.