Warum gibt es keine Möglichkeit zu überprüfen, ob der aktuelle Thread die Lesesperre von ReentrantReadWriteLock enthält?

8

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?

    
rollaeriu360 18.12.2012, 17:20
quelle

2 Antworten

14

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.

    
Miguel Gamboa 18.12.2012, 17:21
quelle
2

ReentrantReadWriteLock.getReadHoldCount () scheint den Job zu erledigen.

    
ikaushan 02.07.2013 23:43
quelle