Cuando nuestro desarrollo en Java implica multiproceso

En Java, cuando nuestro desarrollo implica subprocesos múltiples, es fácil encontrar problemas de interbloqueo en este momento.Cuando nos encontramos con problemas de interbloqueo por primera vez, podemos sentirnos fácilmente desconcertados y difíciles de localizar el problema.

Porque cuando se trata de multiproceso de Java, algunos problemas serán particularmente complicados, e incluso si sabemos que el problema se debe a un interbloqueo, es difícil para nosotros averiguar por qué ocurre el interbloqueo, por lo que cuando nos encontramos con un problema de interbloqueo, ¿Cómo detectar y ver el punto muerto?

El jdk en Java nos proporciona una herramienta muy conveniente para ayudarnos a localizar y analizar el problema del interbloqueo:

1. La causa del interbloqueo: cuando dos o más subprocesos retienen ciertos recursos entre sí y esperan que el otro libere recursos, un interbloqueo es un interbloqueo.

2. Cree un escenario de punto muerto:

public class Test {
    
    
 
	public static void main(String[] args) {
    
    
		new Thread(new Runnable() {
    
    
			
			@Override
			public void run() {
    
    
				synchronized (B.class) {
    
    
					try {
    
    
						Thread.sleep(1000);
					} catch (InterruptedException e) {
    
    
						e.printStackTrace();
					}
					synchronized (A.class) {
    
    
						
					}
				}
			}
		}).start();
		new Thread(new Runnable() {
    
    
			
			@Override
			public void run() {
    
    
				synchronized (A.class) {
    
    
					try {
    
    
						Thread.sleep(1000);
					} catch (InterruptedException e) {
    
    
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					synchronized (B.class) {
    
    
						
					}
				}
				
			}
		}).start();
	}
	
}
class A {
    
    
	
}
 
class B {
    
    
	
}

Se puede ver que en tiempo de ejecución, un subproceso contiene recursos A y espera usar recursos B, mientras que otro subproceso contiene recursos B y espera usar recursos A, y luego cae en un punto muerto de espera mutua, que forma un punto muerto.

3. Punto muerto de vista de Jconsole

Ingrese la ubicación de la instalación de java, ingrese Jconsole, y luego abra la interfaz (o ingrese al directorio de instalación /java/jdk1.70_80/bin/, haga clic en Jconsole.exe):

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/dcj19980805/article/details/115172529
Recomendado
Clasificación