Kaip tvarkyti aklavietę „Java“?



Šiame straipsnyje pateikiama „Deadlock In Java“ sąvoka su pavyzdžiu, parodančiu, kaip blokuojamos kelių gijų programos gijos.

„Java“ programavimo kalba palaiko . Tai apima kelias gijas, vienu metu veikiančias daugybei užduočių. Tačiau tam tikrais atvejais arba dėl tam tikrų trūkumų siūlai amžinai atsiduria laukimo būsenoje. Šiame straipsnyje mes suprasime aklavietę ir skirtingi būdai to išvengti. Toliau pateikiamos šiame tinklaraštyje aptariamos temos:

Kas yra „Java“ aklavietė?

„Java“ aklavietė yra būklė, kai dvi ar daugiau gijų yra blokuojamos amžinai, laukdamos viena kitos.





java kūrėjų atlyginimas Indijoje

Paprastai tai atsitinka, kai kelioms gijoms reikia tų pačių spynų, bet jas gaunama skirtinga tvarka. „Java“ patiria aklavietę dėl sinchronizuoto raktinio žodžio.

Tai sukelia vykdomojo gijos blokavimą laukiant užrakto ar monitoriaus, susieto su nurodytu objektas .



Aklavietė Javoje - „Edureka“

Aklavietės pavyzdys

public class Pavyzdys {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 gija: užrakinta r1') pabandykite {Thread.sleep (100)} gaudyti (išimtis e) {} sinchronizuota (r2) {System.out.println ('1 gija: užrakinta r2'}}}} } Tread t2 = new Thread () {public void run () {synchronized (r1) {System.out.println ('2 gija: užrakinta r1') pabandykite {Thread.sleep (100)} gaudyti (išimtis e) {} sinchronizuotas (r2) {System.out.println ('2 gija: užrakinta r2')}}}} t1.start () t2.start ()}}
 Išvestis: 1 sriegis: užrakinta r1 2 sriegis: užrakinta r2

Kaip išvengti aklavietės „Java“?

Nors ne visiškai įmanoma išvengti aklavietės, tačiau mes galime laikytis tam tikrų priemonių ar patarimų, kad jų išvengtume:

  • Venkite įdėtų spynų - Privalote vengti spynų suteikimo keliems siūlams, tai yra pagrindinė aklavietės būklės priežastis. Paprastai tai atsitinka, kai suteikiate užraktus kelioms gijoms.

  • Venkite nereikalingų spynų - Užraktai turėtų būti pritvirtinti prie svarbių siūlų. Užrakinti nereikalingus siūlus, kurie sukelia aklavietę.



  • „Thread Join“ naudojimas - aklavietė dažniausiai įvyksta, kai viena gija laukia kitos pabaigos. Tokiu atveju mes galime naudoti „Thread.join“ su maksimaliu laiko kiekiu, kurio prireiks gijai.

Taip pateksime į šio straipsnio pabaigą, kur sužinojome apie „Java“ aklavietę ir kaip jos išvengti. Tikiuosi, kad jums aišku viskas, kas buvo pasidalinta su jumis šioje pamokoje.

sukurti susietą sąrašą c

Jei jums pasirodė, kad šis straipsnis yra „Deadlock In Java“, patikrinkite patikima internetinė mokymosi įmonė, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą, pasklido po visą pasaulį.

Mes norime jums padėti kiekviename žingsnyje ir parengti mokymo programą, skirtą studentams ir specialistams, norintiems būti „Java“ kūrėjais. Kursas sukurtas tam, kad galėtumėte pradėti kurti „Java“ programavimą ir išmokyti pagrindines ir pažangias „Java“ koncepcijas kartu su įvairiomis Kaip Hibernate & .

Jei kyla klausimų, nedvejodami užduokite visus klausimus komentarų skiltyje „Deadlock In Java“, ir mūsų komanda mielai atsakys.