Deadlock ist ein Fehler auf Betriebssystemebene und die Abkürzung von Prozess -Deadlock. Es wurde erstmals von Dijkstra bei der Untersuchung von Banker -Algorithmen im Jahr 1965 vorgeschlagen. Es ist eines der schwierigsten Probleme in Computerbetriebssystemen und sogar im gesamten gleichzeitigen Programmierfeld.
Tatsächlich gibt es in der Computerwelt viele Dinge, die von mehreren Threads gelöst werden müssen, da auf diese Weise Ressourcen verwendet werden können, um die Effizienz des Computers zu maximieren. Tatsächlich gibt es jedoch viele Situationen in Computersystemen, in denen Ressourcen jeweils nur von einem Prozess verwendet werden können, z. B. Drucker, und nur ein Prozess kann es gleichzeitig steuern. In einer Multi-Channel-Programmierumgebung teilen mehrere Prozesse häufig solche Ressourcen, und ein Prozess kann mehr als eine Ressource erfordern. Daher konkurrieren mehrere Prozesse um begrenzte Ressourcen, und die Reihenfolge des Fortschritts wird unsachgemäß erfolgen, wodurch eine Situation des unbestimmten Zyklus wartet. Wir nennen diesen Zustand Deadlock. Um einfach auszudrücken, bezieht sich Deadlock auf eine Situation, in der mehrere Prozesse durch die Ressourcen fahren, die sie besetzen und auf unbestimmte Zeit in einer Pattsituation bleiben. Wenn es keine externe Kraft gibt, werden alle Prozesse, die mit Deadlock beteiligt sind, immer blockiert.
Dateiname: DeadThreadByxtend.java
Notiz:
1. Beim Starten eines Threads kann die Startmethode verwendet werden. Die Run -Methode kann auch aufgerufen werden, entspricht jedoch nur einem normalen Aufruf und wird im aktuellen Thread ausgeführt.
2. Synchronized kann Variablen nicht direkt ändern.
3. Der synchronisierte Block erzwingt keinen Thread-Zugriff auf Variablen im Block. Es bedeutet lediglich, dass der Parameter Synchronisierter (Args) bei der Ausführung von Anweisungen innerhalb des Blocks gesperrt ist und erst freigegeben wird, wenn die Ausführung beendet ist.
Paket com.ycf.study.Thread; S1 = neue Quellen (); Quellen s2 = neue Quellen (); Klasse mythread1 erweitert java.lang.thread {@Override public void run () {System.out.println ("Thread 1 startet"); 1 verlässt und freisetzt Lock +++++++++++++++++ ");}} Klasse MyThread2 erweitert java.lang.thread {@Override public void run () {System.out.println (" Thread 2 startet "); s2 "); s2.seta (20); System.out.println (" Thread 2 ändert s2 complete "); Lock ++++++++++++++ ");}} mythread1 mt1 = new mythread1 (); mythread2 mt2 = new mythread2 (); mt1.start (); mt2.start ();}}Zusammenfassen
Das obige dreht sich in diesem Artikel um das Beispiel für den Java -Thread -Deadlock -Code. Ich hoffe, es wird für alle hilfreich sein. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite.