Die Betriebsumgebung dieses Tutorials: Windows 7-System, Java 10-Version, DELL G3-Computer.
1. Beschaffungsmethode
lock(), tryLock(), tryLock(long time, TimeUnit-Einheit) und lockInterruptably() werden alle zum Erlangen von Sperren verwendet.
( 1) Die Methode lock() ist die am häufigsten verwendete Methode zum Erhalten von Sperren . Wenn die Sperre von einem anderen Thread erworben wurde, warten Sie.
( 2) Die tryLock()-Methode hat einen Rückgabewert, was bedeutet, dass sie verwendet wird, um zu versuchen, die Sperre zu erhalten . Wenn die Erfassung erfolgreich ist, gibt sie true zurück, wenn die Erfassung fehlschlägt (d. h. die Sperre wurde von einer anderen Person erworben). Thread) gibt es false zurück, was bedeutet, dass die Methode sofort zurückkehrt, egal was passiert. Sie werden nicht dort warten, wenn Sie das Schloss nicht bekommen.
( 3) Die Methode tryLock (lange Zeit, TimeUnit-Einheit) ähnelt der Methode tryLock (), der Unterschied besteht jedoch darin, dass diese Methode eine bestimmte Zeit lang wartet , wenn die Sperre nicht erhalten werden kann Innerhalb des Zeitlimits wird „false“ zurückgegeben. Gibt „true“ zurück, wenn die Sperre ursprünglich oder während der Wartezeit erhalten wurde.
( 4) Die lockInterruptably()-Methode ist etwas Besonderes. Wenn der Thread über diese Methode eine Sperre erhält, kann er auf den Interrupt reagieren, dh den Wartezustand des Threads unterbrechen. Das heißt, wenn zwei Threads gleichzeitig eine Sperre über lock.lockInterruptably () erhalten möchten und Thread A zu diesem Zeitpunkt die Sperre erhält und Thread B nur wartet, ist dies die Methode threadB.interrupt() Wird für Thread B aufgerufen. Kann den Wartevorgang von Thread B unterbrechen.
2.Beispiele
Nehmen Sie als Beispiel Trylock.
Sperre Sperre = ...; if(lock.tryLock()) { versuchen{ //Aufgaben verarbeiten }catch(Exception ex){ }Endlich{ lock.unlock(); //Sperre freigeben } }anders { //Wenn die Sperre nicht erworben werden kann, andere Dinge direkt ausführen}
In der Java-Schnittstelle sind viele Methoden gespeichert, um direkte Aufrufe bei der Verwendung von Threads zu ermöglichen. Jeder ist mit der Schlossschnittstelle vertraut und wir haben bereits ein vorläufiges Verständnis des Konzepts. Die Methode zur Erlangung der Sperre dürfte also noch nicht ganz klar sein.
Nach dem Lesen des Artikels können Sie Ihr Gedächtnis und Ihr Verständnis in diesem Bereich stärken. Wenn Sie an anderen Methoden zum Erwerb von Sperren interessiert sind, können Sie nach dem Unterricht auch relevante Codes finden.