Ich habe festgestellt, dass die Schreibsperre von ReentrantReadWriteLock
eine isHeldByCurrentThread()
-Methode bereitstellt, um zu überprüfen, ob der aufrufende Thread diese Sperre enthält.
Aber es gibt keine entsprechende Methode isHeldByCurrentThread()
für die Lesesperre. Warum nicht?
Ich denke, die Antwort ist in dem Kommentar von Doug Leas, den er für dieses Thema gegeben hat: Ссылка .
Doug Lea schreibt:
Das derzeitige Design und Verhalten ist beabsichtigt. Read-Locks sind normalerweise nicht so definiert, dass sie Eigentümer sind, daher kann der Besitz nicht getestet werden. ... Der JSR166 EG hat einige Anfragen erhalten, um die Lese-Halte-Verfolgung pro Thread optional zu unterstützen. Dies würde den Sperraufwand beträchtlich erhöhen und müsste daher durch einen optionalen Konstruktionsparameter geregelt werden. Wir schauen uns das an.
Tags und Links java multithreading concurrency java.util.concurrent concurrent-programming