Die Betriebsumgebung dieses Tutorials: Windows7-System, Java10-Version, DELL G3-Computer.
1. Konzept
Eine wiedereintrittsfähige Lese-/Schreibsperre verwaltet intern eine Lese-/Schreibsperre . Die unterste Schicht ist immer noch AQS, aber AQS hat nur eine Zustandsgröße gleichzeitig Der Status (int) wird hier verwendet. Das Bit stellt den Lesestatus dar, die niedrigen 16 Bits stellen das Schreiben dar, die hohen 16 Bits stellen die Anzahl der Threads dar, die die Lesesperre erhalten, und die niedrigen 16 Bits stellen die Wiedereintrittszahl der Schreibsperre dar .
2. Prinzip
Implementiert mithilfe der CAS+AQS- Warteschlange. Es unterstützt faire und unfaire Sperren und die Implementierung beider ist ähnlich
3. Beispiele
Die öffentliche Klasse ReentrantDemo implementiert Runnable { Lock lock = new ReentrantLock(); @Override public void run() { Satz(); } public void set() { versuchen { lock.lock(); System.out.println("set method"); erhalten(); } Catch (Ausnahme e) { e.printStackTrace(); } Endlich { lock.unlock();//Muss endlich freigegeben werden } } public void get() { versuchen { lock.lock(); System.out.println("get method"); } Catch (Ausnahme e) { e.printStackTrace(); } Endlich { lock.unlock(); } } public static void main(String[] args) { ReentrantDemo reentrantDemo = new ReentrantDemo(); neuer Thread(reentrantDemo).start(); } }
Das Obige ist der Wiedereintrittstest von Java ReentrantLock. Ich glaube, dass jeder nach dem Lesen des gesamten Artikels zunächst in der Lage sein wird, die Verwendung von ReentrantLock zu verstehen, und Sie können den zugehörigen Inhalt der Wiedereintrittssperre auch nach dem Unterricht erweitern.