Hoe om te gaan met deadlock in Java?



Dit artikel behandelt het concept van Deadlock in Java met een voorbeeld dat laat zien hoe de threads in een multi-threaded programma worden geblokkeerd.

Java-programmeertaal ondersteunt . Het omvat meerdere threads die tegelijkertijd worden uitgevoerd voor multitasking. Maar in bepaalde gevallen of vanwege bepaalde tekortkomingen bevinden de draden zich voor altijd in de wachttoestand. In dit artikel zullen we de impasse-toestand in en verschillende manieren om het te vermijden. Hieronder volgen de onderwerpen die in deze blog worden besproken:

Wat is Deadlock in Java?

Deadlock in Java is een toestand waarbij twee of meer threads voor altijd worden geblokkeerd en op elkaar wachten.





Dit gebeurt meestal wanneer meerdere threads dezelfde sloten nodig hebben, maar ze in verschillende volgorde verkrijgen. in Java lijdt aan de impasse vanwege het gesynchroniseerde trefwoord.

Het zorgt ervoor dat de uitvoerende thread wordt geblokkeerd tijdens het wachten op de vergrendeling of monitor die is gekoppeld aan het opgegeven voorwerp .



hoe je double verandert in int in java

Deadlock in Java - Edureka

Deadlock Voorbeeld

public class Voorbeeld {public static void main (String [] args) {final String r1 = 'edureka' final String r2 = 'java' Thread t1 = nieuwe Thread () {public void run () {synchronized (r1) {System. out.println ('Thread 1: Locked r1') probeer {Thread.sleep (100)} catch (uitzondering e) {} synchronized (r2) {System.out.println ('Thread 1: Locked r2')}}} } Thread t2 = new Thread () {public void run () {synchronized (r1) {System.out.println ('Thread 2: Locked r1') probeer {Thread.sleep (100)} catch (uitzondering e) {} gesynchroniseerd (r2) {System.out.println ('Thread 2: Locked r2')}}}} t1.start () t2.start ()}}
 Uitgang: Draad 1: Vergrendeld r1 Draad 2: Vergrendeld r2

Hoe een impasse in Java te vermijden?

Hoewel het niet helemaal mogelijk is om een ​​impasse te voorkomen, kunnen we bepaalde maatregelen of aanwijzingen volgen om ze te vermijden:

  • Vermijd geneste sloten - U moet vermijden om meerdere threads te vergrendelen, dit is de belangrijkste reden voor een impasse. Het gebeurt normaal gesproken wanneer u vergrendelingen aan meerdere threads geeft.

  • Vermijd onnodige sloten - De sloten moeten aan de belangrijke draden worden gegeven. Vergrendelingen geven aan de onnodige threads die de impasse veroorzaken.



  • Thread Join gebruiken - Een impasse treedt meestal op wanneer de ene thread wacht tot de andere klaar is. In dit geval kunnen we Thread.join gebruiken met een maximale tijd die een thread nodig heeft.

Dit brengt ons bij het einde van dit artikel waar we hebben geleerd over de impasse in Java en hoe deze te vermijden. Ik hoop dat je duidelijk bent met alles wat in deze tutorial met je is gedeeld.

Als je dit artikel over 'Deadlock in Java' relevant vond, bekijk dan het een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld.

We zijn hier om u te helpen bij elke stap op uw reis en om een ​​curriculum te bedenken dat is ontworpen voor studenten en professionals die een Java-ontwikkelaar willen worden. De cursus is ontworpen om u een voorsprong te geven in het programmeren van Java en u te trainen in zowel kern- als geavanceerde Java-concepten, samen met verschillende Leuk vinden Slaapstand & .

Mocht u vragen tegenkomen, stel dan gerust al uw vragen in het commentaargedeelte van 'Deadlock In Java' en ons team zal u graag antwoorden.