Kā rīkoties strupceļā Java?



Šis raksts aptver Deadlock In Java jēdzienu ar piemēru, kas parāda, kā tiek bloķēti vairāku pavedienu programmas pavedieni.

Java programmēšanas valoda atbalsta . Tas ietver vairākus pavedienus, kas vienlaikus darbojas daudzuzdevumu veikšanai. Bet noteiktos gadījumos vai noteiktu trūkumu dēļ pavedieni uz visiem laikiem nonāk gaidīšanas stāvoklī. Šajā rakstā mēs sapratīsim strupceļa stāvokli un dažādi veidi, kā no tā izvairīties. Šajā emuārā ir apskatītas šādas tēmas:

kā izmantot jaudu pitonā

Kas ir Java strupceļš?

Java strupceļš ir stāvoklis, kad divi vai vairāki pavedieni tiek bloķēti uz visiem laikiem, gaidot viens otru.





Parasti tas notiek, ja vairākiem pavedieniem ir vajadzīgas vienas un tās pašas slēdzenes, bet tās iegūst dažādās secībās. Java cieš no strupceļa situācijas sinhronizētā atslēgvārda dēļ.

Tas izraisa izpildes pavediena bloķēšanu, gaidot bloķēšanu vai monitoru, kas saistīts ar norādīto objekts .



Strupceļš Javā - Edureka

Strupceļa piemērs

public class Piemērs {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 ('1. pavediens: bloķēts r1') izmēģiniet {Thread.sleep (100)} nozveju (izņēmums e) {} sinhronizēts (r2) {System.out.println ('1. pavediens: bloķēts r2')}}} } Thread t2 = new Thread () {public void run () {synchronized (r1) {System.out.println ('Thread 2: Locked r1') mēģiniet {Thread.sleep (100)} catch (izņēmums e) {} sinhronizēts (r2) {System.out.println ('2. pavediens: bloķēts r2')}}}} t1.start () t2.start ()}}
 Izeja: 1. pavediens: bloķēts r1 2. pavediens: bloķēts r2

Kā izvairīties no strupceļa Java?

Lai gan nav pilnīgi iespējams izvairīties no strupceļa, bet mēs varam ievērot noteiktus pasākumus vai norādes, lai no tiem izvairītos:

  • Izvairieties no ligzdotām slēdzenēm - Jums jāizvairās piešķirt slēdzenes vairākiem pavedieniem, tas ir galvenais strupceļa iemesls. Parasti tas notiek, piešķirot slēdzenes vairākiem pavedieniem.

  • Izvairieties no nevajadzīgām slēdzenēm - Svarīgajiem pavedieniem jāpiešķir slēdzenes. Piešķirt slēdzenes nevajadzīgajiem pavedieniem, kas izraisa strupceļu.



  • Thread Join izmantošana - Strupceļš parasti notiek, kad viens pavediens gaida, kamēr otrs beigsies. Šajā gadījumā mēs varam izmantot Thread.join ar maksimālo laiku, kas vajadzīgs pavedienam.

Tādējādi mēs nonākam līdz šī raksta beigām, kur mēs esam uzzinājuši par Java strupceļu un kā no tā izvairīties. Es ceru, ka jums ir skaidrs viss, kas ar jums ir kopīgots šajā apmācībā.

Ja jums šis raksts par “Deadlock In Java” ir aktuāls, pārbaudiet uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē.

Mēs esam šeit, lai palīdzētu jums katrā solī jūsu ceļojumā un izdomātu mācību programmu, kas paredzēta studentiem un profesionāļiem, kuri vēlas būt Java izstrādātāji. Kurss ir paredzēts, lai dotu jums sākumu Java programmēšanā un apmācītu gan pamata, gan uzlabotas Java koncepcijas kopā ar dažādām patīk Pārziemot & .

Ja jums rodas kādi jautājumi, droši uzdodiet visus jautājumus komentāru sadaļā “Deadlock In Java”, un mūsu komanda ar prieku atbildēs.