¿Cuál es punto muerto, cómo analizar y evitarlo en java?

En este artículo, vamos a aprender sobre punto muerto en Java Lo que es situación de bloqueo y cómo analizar y estancamiento evitar?

punto muerto en Java

  • Cuando dos subprocesos esperan class unos a otros medios para siempre (es decir, que no tienen la oportunidad de entrar en una cola de listo) tal tipo de infinita de espera se llama punto muerto.
  • un interbloqueo cuando el proceso de espera todavía se está sosteniendo sobre otro recurso que las primeras necesidades antes de que pueda terminar.
  • Mediante el uso de la palabra clave class podemos avanzar hacia la situación de bloqueo. No se recomienda la palabra clave Sincronizar aplicar innecesariamente.
  • No podemos resolver estancamiento pero podemos evitar la situación de bloqueo basado en varias técnicas.

¿Cómo podemos analizar la situación de bloqueo?

  • Si todas las discusiones tienen sólo un objeto, entonces podemos utilizar una gráfica llamada espera- for -graph.
  • Si hay varios objetos synchronized un solo hilo como un ciclo continuación espera- for -graph no funcionará entonces deberíamos ir for tales como una solución algoritmo del banquero en el sistema operativo para detectar un punto muerto.

En el ejemplo dado, a continuación vamos a ver la situación de punto muerto:

Ejemplo:

class HelloClass{
public synchronized void first(HiClass hi)
{
try{
Thread.sleep(1000);
}
catch(InterruptedException ie){}
System.out.println(" HelloClass is calling HiClass second() method");
hi.second();
}
public synchronized void second(){
System.out.println("I am inside second method of HelloClass");
}
}
class HiClass{
public synchronized void first(HelloClass he)
{
try{
Thread.sleep(1000);
}
catch(InterruptedException ie){}
System.out.println(" HiClass is calling HelloClass second() method");
he.second();
}
public synchronized void second(){
System.out.println("I am inside second method of HiClass");
}
}
class DeadlockClass extends Thread{
HelloClass he = new HelloClass();
HiClass hi = new HiClass();
public void demo(){
this.start();
he.first(hi);
}
public void run(){
hi.first(he);
}
public static void main(String[] args){
DeadlockClass dc = new DeadlockClass();
dc.demo();
}
}

salida

D:Java Articles>java DeadlockClass
HelloClass is calling HiClass second() method
HiClass is calling HelloClass second() method


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *