Sådan håndteres deadlock i Java?



Denne artikel dækker begrebet Deadlock In Java med et eksempel, der viser, hvordan trådene i et multitrådet program bliver blokeret.

Java-programmeringssprog understøtter . Det involverer flere tråde, der kører samtidigt til multitasking. Men i visse tilfælde eller på grund af visse mangler befinder trådene sig i ventetilstand for evigt. I denne artikel vil vi forstå dødvandsforholdene i og forskellige måder at undgå det på. Følgende er de emner, der diskuteres i denne blog:

Hvad er Deadlock i Java?

Deadlock i Java er en tilstand, hvor to eller flere tråde er blokeret for evigt og venter på hinanden.





Dette sker normalt, når flere tråde har brug for de samme låse, men får dem i forskellige ordrer. i Java lider af blokeringssituationen på grund af det synkroniserede nøgleord.

Det får den udførende tråd til at blokere, mens du venter på låsen eller skærmen, der er knyttet til det specificerede objekt .



Deadlock i Java - Edureka

Deadlock-eksempel

public class Eksempel {public static void main (String [] args) {final String r1 = 'edureka' final String r2 = 'java' Thread t1 = new Thread () {public void run () {synchronized (r1) {System. out.println ('Tråd 1: Låst r1') prøv {Tråd.sove (100)} fangst (undtagelse e) {} synkroniseret (r2) {System.out.println ('Tråd 1: Låst r2')}} } Tråd t2 = ny tråd () {offentlig ugyldig kørsel () {synkroniseret (r1) {System.out.println ('Tråd 2: Låst r1') prøv {Thread.sleep (100)} fangst (undtagelse e) {} synkroniseret (r2) {System.out.println ('Tråd 2: Låst r2')}}} t1.start () t2.start ()}}
 Produktion: Tråd 1: Låst r1 Tråd 2: Låst r2

Sådan undgår du blokering i Java?

Selvom det ikke er fuldstændigt muligt at undgå blokering, men vi kan følge visse foranstaltninger eller pekepinde for at undgå dem:

  • Undgå indlejrede låse - Du skal undgå at give låse til flere tråde, dette er hovedårsagen til en blokeringstilstand. Det sker normalt, når du giver låse til flere tråde.

  • Undgå unødvendige låse - Låsene skal gives til de vigtige tråde. At give låse til de unødvendige tråde, der forårsager blokeringstilstanden.



    hvad er en begivenhed i javascript
  • Brug af trådtilslutning - En dødvande sker normalt, når den ene tråd venter på, at den anden slutter. I dette tilfælde kan vi bruge Thread.join med den maksimale tid, som en tråd tager.

Dette bringer os til slutningen af ​​denne artikel, hvor vi har lært om dødvandet i Java, og hvordan man undgår det. Jeg håber, du er klar over alt, hvad der er delt med dig i denne vejledning.

Hvis du fandt denne artikel om 'Deadlock In Java' relevant, skal du tjekke en betroet online læringsvirksomhed med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden.

Vi er her for at hjælpe dig med hvert trin på din rejse og komme med en læseplan, der er designet til studerende og fagfolk, der ønsker at være Java-udvikler. Kurset er designet til at give dig et forspring i Java-programmering og træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige synes godt om Dvale & .

Hvis du støder på spørgsmål, er du velkommen til at stille alle dine spørgsmål i kommentarfeltet i 'Deadlock In Java', og vores team vil med glæde svare.