Wie gehe ich mit Deadlock in Java um?



Dieser Artikel behandelt das Konzept von Deadlock in Java anhand eines Beispiels, das zeigt, wie die Threads in einem Multithread-Programm blockiert werden.

Java-Programmiersprache unterstützt . Es werden mehrere Threads gleichzeitig für Multitasking ausgeführt. Aber in bestimmten Fällen oder aufgrund bestimmter Mängel befinden sich die Threads für immer im Wartezustand. In diesem Artikel werden wir den Deadlock-Zustand in verstehen und verschiedene Möglichkeiten, dies zu vermeiden. Im Folgenden werden die in diesem Blog behandelten Themen aufgeführt:

Was ist Deadlock in Java?

Deadlock in Java ist eine Bedingung, bei der zwei oder mehr Threads für immer blockiert sind und aufeinander warten.





wie man eine Instanzvariable in Java deklariert

Dies geschieht normalerweise, wenn mehrere Threads dieselben Sperren benötigen, diese jedoch in unterschiedlicher Reihenfolge erhalten. in Java leidet unter der Deadlock-Situation aufgrund des synchronisierten Schlüsselworts.

Dadurch wird der ausführende Thread blockiert, während auf die Sperre oder den Monitor gewartet wird, die bzw. der dem angegebenen Thread zugeordnet ist Objekt .



Deadlock in Java - Edureka

Deadlock-Beispiel

public class Beispiel {public static void main (String [] args) {final String r1 = 'edureka' final String r2 = 'java' Thread t1 = neuer Thread () {public void run () {synchronized (r1) {System. out.println ('Thread 1: Locked r1') try {Thread.sleep (100)} catch (Ausnahme e) {} synchronized (r2) {System.out.println ('Thread 1: Locked r2')}}} } Thread t2 = neuer Thread () {public void run () {synchronisiert (r1) {System.out.println ('Thread 2: Gesperrt r1') try {Thread.sleep (100)} catch (Ausnahme e) {} synchronized (r2) {System.out.println ('Thread 2: Locked r2')}}}} t1.start () t2.start ()}}
 Ausgabe: Gewinde 1: Gesperrt r1 Gewinde 2: Gesperrt r2

Wie vermeide ich Deadlock in Java?

Es ist zwar nicht vollständig möglich, einen Deadlock-Zustand zu vermeiden, aber wir können bestimmte Maßnahmen oder Hinweise befolgen, um sie zu vermeiden:

  • Vermeiden Sie verschachtelte Sperren - Sie müssen vermeiden, dass mehrere Threads gesperrt werden. Dies ist der Hauptgrund für einen Deadlock-Zustand. Dies geschieht normalerweise, wenn Sie mehreren Threads Sperren geben.

  • Vermeiden Sie unnötige Schlösser - Die Schlösser sollten an den wichtigen Gewinden angebracht werden. Sperren der unnötigen Threads, die den Deadlock-Zustand verursachen.



  • Verwenden von Thread Join - Ein Deadlock tritt normalerweise auf, wenn ein Thread darauf wartet, dass der andere beendet wird. In diesem Fall können wir Thread.join mit einer maximalen Zeit verwenden, die ein Thread benötigt.

Dies bringt uns zum Ende dieses Artikels, in dem wir etwas über den Deadlock in Java und dessen Vermeidung erfahren haben. Ich hoffe, Sie sind mit allem klar, was in diesem Tutorial mit Ihnen geteilt wurde.

konvertiere double in integer java

Wenn Sie diesen Artikel zu 'Deadlock In Java' relevant fanden, lesen Sie die Ein vertrauenswürdiges Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt.

Wir sind hier, um Ihnen bei jedem Schritt auf Ihrer Reise zu helfen und einen Lehrplan zu erstellen, der für Studenten und Fachleute konzipiert ist, die Java-Entwickler werden möchten. Der Kurs soll Ihnen einen Vorsprung in die Java-Programmierung verschaffen und Sie sowohl für Kern- als auch für fortgeschrittene Java-Konzepte sowie für verschiedene Konzepte schulen mögen Überwintern & .

Wenn Sie auf Fragen stoßen, können Sie alle Ihre Fragen im Kommentarbereich von „Deadlock In Java“ stellen. Unser Team wird diese gerne beantworten.