Red de conocimiento informático - Conocimiento del nombre de dominio - Implementación de programación Jijiji: realice exclusión mutua de subprocesos múltiples en Windows, visualización del subproceso principal, suspensión durante 2 segundos, visualización del subproceso secundario, suspensión durante 1 segundo

Implementación de programación Jijiji: realice exclusión mutua de subprocesos múltiples en Windows, visualización del subproceso principal, suspensión durante 2 segundos, visualización del subproceso secundario, suspensión durante 1 segundo

paquete?com.cao.test;

¿clase pública?Test3?{

pública?estática?void?main(String?args[]) ?throws?Exception?{

Thread?t1?=?new?Thread(new?Runnable()?{

public?void?run()?{

intentar?{

long?s3?=?System.currentTimeMillis();

System.out.println("-----ocupado por subproceso-- - -------");

Singleton.getSigleton().getStr("F");

System.out.println("----- Fin de ocupación del hilo----------");

long?s4?=?System.currentTimeMillis();

System.out.println(" Tiempo ocupado por subprocesos: "?+?(s4?-?s3));

}?catch?(Exception?e)?{

e.printStackTrace();< / p>

}

}

});

t1.start();

long?s?= ? System.currentTimeMillis();

System.out.println("-----El hilo principal está ocupado----------");

Singleton.getSigleton().getStr("M");

System.out.println("-----Fin de la ocupación del hilo principal----------");

long?s2?=?System.currentTimeMillis();

System.out.println("Tiempo de ocupación del hilo principal:"?+?(s2?-?s))

}

}

clase?Singleton?{

privado?estático?Singleton?s;

public?String?str?=?"Hola";

public?String?getStr(String?tName)?throws?Exception?{

sincronizado?(Singleton.class) ?{

System.out.println(tName?+?"Enter");

Thread.sleep(1000);

System.out.println (tName?+?"End");

}

return?str;

}

privado?Singleton()? {

System.out.println("¿Un?Singleton?Model?ejemplo");

}

public?static?Singleton?getSigleton()? {<

/p>

si?(s?==?null)

s?=?new?Singleton();

retorno?s;

}

}

Ejecutar resultados.

-

-----El hilo principal está ocupado----------

-----El subproceso el hilo está ocupado ----------

Un ejemplo de modelo Singleton

Un ejemplo de modelo Singleton

MEnter

MEnd

-----Finaliza la ocupación del hilo principal----------

F enter

Tiempo de ocupación del hilo principal: 1002

p>

F termina

-----Fin de ocupación del hilo----------

Tiempo ocupado por los hilos: 2006

Análisis: M es el subproceso principal, F es el subproceso y str es el recurso Independientemente del subproceso M o F, ingresar el método getStr dormirá durante 1000 milisegundos. bloquee el método y solo un subproceso puede operar el método getStr. No importa qué subproceso ingrese primero en este momento, esperará 1 segundo en el método y luego saldrá, por lo que el subproceso M ingresa y duerme durante un segundo. El proceso F está esperando a que el subproceso M termine de ejecutarse, el tiempo de espera es de 1 segundo y luego ingresa al método getStr para dormir durante 1 segundo, por lo que el subproceso M tiene 1 segundo para dormir y el subproceso F espera más el modo de suspensión. tiempo de 1***2 segundos