Frage

Nur eine kurze Frage zu ReadWriteLocks in Java (speziell die ReentrantReadWriteLock Implementierung), wie ich finde nicht die Sonne Dokumentation klar.

Was passiert, wenn eine Lesesperre von einem Thread gehalten wird, wenn eine Schreibsperre durch ein anderes angefordert wird? Hat die Schreibsperre Thread für alle derzeit gehaltenen Lesesperren warten, um zu erscheinen? Außerdem haben alle neuen Lese-Lock-Anforderungen blockiert werden, bis die Schreibsperre erteilt und freigegeben wird?

Danke

War es hilfreich?

Lösung

Die Javadoc erklärt dies:

  

Diese Klasse verhängen keinen Leser   oder Schriftsteller Präferenzordnung für   Schloss-Zugang. Allerdings ist es Unterstützung   ein optional Fairness   Politik. Wenn sie als Messe aufgebaut,   Gewinde kämpfen für den Eintritt unter Verwendung eines   etwa Ankunft Ordnung Politik.   Wenn die Schreibsperre wird freigegeben   entweder die am längsten warten Single   Schreiber die Schreib zugeordnet werden   sperren, oder wenn es ein Leser wartet   länger als jeder Schriftsteller, der Satz von   Leser werden die Lese zugeordnet werden   sperren. Wenn sie als nicht-Messe aufgebaut,   die Reihenfolge der Eingabe an das Schloss Notwendigkeit   nicht in der Ankunft Ordnung sein. in jedem   Fall, wenn die Leser aktiv sind und ein   Schreiber tritt die Sperre dann nicht   nachfolgende Leser wird gewährt   die Lesesperre erst nach diesem Schriftsteller   erworben hat und veröffentlicht die Schreib   sperren.


  

Was passiert, wenn eine Lesesperre von einem Thread gehalten wird, wenn eine Schreibsperre durch ein anderes angefordert wird? Hat die Schreibsperre Thread für alle derzeit gehaltenen Lesesperren warten, um zu erscheinen?

Ja, der Schriftsteller warten müssen. Aber es wird nur für die aktuell gehaltenen Lesesperren warten. Etwaige Leser ankommen später nach dem Schriftsteller Warteschlange.

  

Auch haben alle neuen Lese-Lock-Anforderungen blockiert werden, bis die Schreibsperre erteilt und freigegeben wird?

Ja

Andere Tipps

Ein ReadWriteLock kann nicht eine Schreibsperre an der gleichen Zeit wie Lesesperren gehalten hat. Anfragen für, sagen wir, eine Schreibsperre, wenn eine Lesesperre bei der Blockierung oder ein Fail führt statt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top