Como lidar com deadlock em Java?



Este artigo cobre o conceito de Deadlock em Java com um exemplo que mostra como os threads em um programa multiencadeado são bloqueados.

Suporte à linguagem de programação Java . Envolve vários threads em execução simultaneamente para multitarefa. Mas em certos casos ou devido a certas deficiências, os fios ficam no estado de espera para sempre. Neste artigo, vamos entender a condição de deadlock em e diferentes maneiras de evitá-lo. A seguir estão os tópicos discutidos neste blog:

O que é Deadlock em Java?

Deadlock em Java é uma condição em que dois ou mais threads são bloqueados para sempre, esperando um pelo outro.





converter binário em decimal em java

Isso geralmente acontece quando vários threads precisam dos mesmos bloqueios, mas os obtêm em ordens diferentes. em Java sofre de situação de conflito por causa da palavra-chave synchronized.

Faz com que o thread em execução bloqueie enquanto espera pelo bloqueio, ou monitor, associado ao especificado objeto .



Impasse em Java - Edureka

Exemplo de deadlock

public class Exemplo {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 (exception 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') try {Thread.sleep (100)} catch (exception e) {} synchronized (r2) {System.out.println ('Thread 2: Locked r2')}}}} t1.start () t2.start ()}}
 Resultado: Tópico 1: r1 bloqueado Tópico 2: r2 bloqueado

Como evitar deadlock em Java?

Embora não seja totalmente possível evitar a condição de deadlock, podemos seguir certas medidas ou dicas para evitá-los:

  • Evite bloqueios aninhados - Você deve evitar dar bloqueios a vários threads, esse é o principal motivo para uma condição de deadlock. Normalmente acontece quando você dá bloqueios a vários threads.

  • Evite bloqueios desnecessários - Os bloqueios devem ser dados aos tópicos importantes. Dando bloqueios aos threads desnecessários que causam a condição de deadlock.



  • Usando Thread Join - Um deadlock geralmente acontece quando um thread está esperando o outro terminar. Nesse caso, podemos usar Thread.join com um tempo máximo que um thread levará.

Isso nos leva ao final deste artigo, onde aprendemos sobre o impasse em Java e como evitá-lo. Espero que você tenha esclarecido tudo o que foi compartilhado com você neste tutorial.

conversão de tipo c ++

Se você achou este artigo sobre “Deadlock em Java” relevante, verifique o uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo.

Estamos aqui para ajudá-lo em cada etapa da sua jornada e criar um currículo que é projetado para estudantes e profissionais que desejam ser um desenvolvedor Java. O curso é projetado para dar a você uma vantagem na programação Java e treiná-lo para os conceitos básicos e avançados de Java, juntamente com vários gostar Hibernar E .

Se você encontrar alguma dúvida, fique à vontade para fazer todas as suas perguntas na seção de comentários de “Deadlock In Java” e nossa equipe terá prazer em responder.