Obsługuje język programowania Java . Obejmuje wiele wątków działających jednocześnie w celu wykonywania wielu zadań jednocześnie. Ale w niektórych przypadkach lub z powodu pewnych niedociągnięć wątki na zawsze znajdują się w stanie oczekiwania. W tym artykule zrozumiemy stan zakleszczenia w i różne sposoby, aby tego uniknąć. Poniżej znajdują się tematy omówione na tym blogu:
Co to jest zakleszczenie w Javie?
Zakleszczenie w Javie to stan, w którym dwa lub więcej wątków jest zablokowanych na zawsze, czekając na siebie.
nauka informatyki krok po kroku
Zwykle dzieje się tak, gdy wiele wątków potrzebuje tych samych zamków, ale uzyskuje je w różnych zamówieniach. w Javie cierpi na sytuację zakleszczenia z powodu słowa kluczowego synchronized.
Powoduje blokowanie wątku wykonawczego podczas oczekiwania na blokadę lub monitor skojarzony z określonym obiekt .
Przykład impasu
public class Przykład {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 ('Thread 1: Locked r1') try {Thread.sleep (100)} catch (wyjątek e) {} synchronized (r2) {System.out.println ('Thread 1: Locked r2')}}} } Wątek t2 = new Thread () {public void run () {synchronized (r1) {System.out.println ('Thread 2: Locked r1') try {Thread.sleep (100)} catch (wyjątek e) {} synchronized (r2) {System.out.println ('Thread 2: Locked r2')}}}} t1.start () t2.start ()}}
Wynik: Wątek 1: Zablokowany r1 Wątek 2: Zablokowany r2
Jak uniknąć impasu w Javie?
Chociaż nie jest całkowicie możliwe uniknięcie stanu zakleszczenia, możemy zastosować pewne środki lub wskazówki, aby ich uniknąć:
Unikaj zagnieżdżonych zamków - Należy unikać blokowania wielu wątków, jest to główna przyczyna stanu zakleszczenia. Zwykle dzieje się tak, gdy blokujesz wiele wątków.
Unikaj niepotrzebnych blokad - Zamki należy założyć na ważne wątki. Dawanie blokad niepotrzebnym wątkom, które powodują stan zakleszczenia.
Korzystanie z funkcji łączenia wątków - Zakleszczenie występuje zwykle, gdy jeden wątek czeka na zakończenie drugiego. W takim przypadku możemy użyć Thread.join z maksymalnym czasem, jaki zajmie wątek.
To prowadzi nas do końca tego artykułu, w którym dowiedzieliśmy się o impasie w Javie i jak go uniknąć. Mam nadzieję, że wszystko, co zostało Ci udostępnione w tym samouczku, jest dla Ciebie jasne.
co to jest echo w php
Jeśli uważasz, że ten artykuł na temat „Deadlock In Java” jest odpowiedni, zapoznaj się z zaufana firma zajmująca się edukacją online z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie.
Jesteśmy tutaj, aby pomóc Ci na każdym etapie Twojej podróży i opracować program nauczania przeznaczony dla studentów i profesjonalistów, którzy chcą zostać programistą Java. Kurs ma na celu zapewnienie przewagi w programowaniu w języku Java i szkolenie zarówno podstawowych, jak i zaawansowanych koncepcji języka Java, a także różnych lubić Hibernować & .
Jeśli napotkasz jakieś pytania, nie krępuj się zadawać je w sekcji komentarzy w „Deadlock In Java”, a nasz zespół z przyjemnością odpowie.