¿Cómo manejar el interbloqueo en Java?



Este artículo cubre el concepto de Deadlock en Java con un ejemplo que muestra cómo se bloquean los subprocesos en un programa de subprocesos múltiples.

Soporta lenguaje de programación Java . Implica varios subprocesos que se ejecutan simultáneamente para realizar múltiples tareas. Pero en ciertos casos o debido a ciertas deficiencias, los hilos se encuentran en el estado de espera para siempre. En este artículo, entenderemos la condición de interbloqueo en y diferentes formas de evitarlo. Los siguientes son los temas que se tratan en este blog:

¿Qué es Deadlock en Java?

El interbloqueo en Java es una condición en la que dos o más subprocesos están bloqueados para siempre, esperando el uno al otro.





Esto suele ocurrir cuando varios subprocesos necesitan los mismos bloqueos pero los obtienen en diferentes órdenes. en Java sufre la situación de punto muerto debido a la palabra clave sincronizada.

Hace que el subproceso en ejecución se bloquee mientras espera el bloqueo, o monitor, asociado con el especificado objeto .



Deadlock en Java - Edureka

Ejemplo de interbloqueo

public class Ejemplo {public static void main (String [] args) {final String r1 = 'edureka' final String r2 = 'java' Thread t1 = new Thread () {public void run () {sincronizado (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 () {sincronizado (r1) {System.out.println ('Thread 2: Locked r1') try {Thread.sleep (100)} catch (excepción e) {} sincronizado (r2) {System.out.println ('Thread 2: Locked r2')}}}} t1.start () t2.start ()}}
 Salida: Hilo 1: Bloqueado r1 Hilo 2: Bloqueado r2

¿Cómo evitar el interbloqueo en Java?

Aunque no es completamente posible evitar la condición de interbloqueo, podemos seguir ciertas medidas o consejos para evitarlos:

fallar rápido vs fallar seguro
  • Evite bloqueos anidados - Debe evitar dar bloqueos a varios subprocesos, esta es la razón principal de una condición de interbloqueo. Normalmente sucede cuando le da bloqueos a varios hilos.

  • Evite bloqueos innecesarios - Los candados deben darse a los hilos importantes. Dar bloqueos a los subprocesos innecesarios que causan la condición de interbloqueo.



  • Usando Thread Join - Un interbloqueo ocurre normalmente cuando un hilo está esperando que el otro termine. En este caso, podemos usar Thread.join con el tiempo máximo que tomará un hilo.

Esto nos lleva al final de este artículo donde hemos aprendido sobre el punto muerto en Java y cómo evitarlo. Espero que tengas claro todo lo que se ha compartido contigo en este tutorial.

estructura de un programa java

Si encuentra relevante este artículo sobre 'Interbloqueo en Java', consulte el una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo.

Estamos aquí para ayudarlo en cada paso de su viaje y crear un plan de estudios diseñado para estudiantes y profesionales que desean ser desarrolladores de Java. El curso está diseñado para darle una ventaja en la programación de Java y capacitarlo para los conceptos básicos y avanzados de Java junto con varios me gusta Hibernar & .

Si tiene alguna pregunta, no dude en hacer todas sus preguntas en la sección de comentarios de 'Deadlock In Java' y nuestro equipo estará encantado de responder.