Problemas de programación Java: subprocesos múltiples
Escribí un caso de prueba para usted, solo eche un vistazo y lo sabrá. El conocimiento de los bloques de sincronización se utiliza aquí. Si no comprende la sincronización, puede consultar este enlace
/question/79461361.html
El código fuente y los resultados de la prueba son los siguientes:
importar java.util.Date;
clase pública ThreadTestB {
public static void main (String[] args) {
Subproceso t1 = new MyThreadB("Subproceso A");
Subproceso t2 = nuevo MyThreadB("Subproceso B");
t1.setPriority(Thread.MAX_PRIORITY);
t2.setPriority(Thread.NORM_PRIORITY);
//El la prioridad establecida anteriormente parece inútil, t1 comienza primero, luego A realizará la acción de bloqueo primero
t1.start()
t2.start();
}
}
clase MyThreadB extiende Thread {
Objeto estático obj = new Object();
String threadName; p>
public MyThreadB(nombre de cadena) {
this.threadName = nombre;
}
public void run() {
for (int i = 0; i < 100000; i++) {
sincronizado (obj) {
//Después de bloquear el objeto obj, si hay subprocesos posteriores que quieren usar obj, solo pueden esperar
//Este hilo puede obtener el bloqueo del objeto obj solo después de ejecutar este bloque de sincronización. Antes de eso, debe esperar en la cola del sistema
. Fecha startTime = new Date();
System.out .println("En el momento: " + startTime.toLocaleString()
+ ", thread" + threadName + " bloquear objeto ");
prueba {
this.sleep(5000);
} captura (Excepción e) {
System.out .println("Se produjo una excepción: " + e.getMessage());
e.printStackTrace();
}
Fecha hora de finalización =
new Date();
System.out.println("En el momento: " + endTime.toLocaleString()
+ ", thread " + threadName + " Liberar objeto");
}
}
}
}
Resultados de la prueba:
En Hora: 2009-8-16 7:56:25, el hilo A bloquea el objeto
En el momento: 2009-8-16 7:56:30, el hilo A libera el objeto
En el momento: 2009-8-16 7:56:30, el hilo B bloquea el objeto
En el momento: 2009-8-16 7:56:35, el hilo B libera el objeto
En el momento: 2009-8-16 7:56:35, el hilo A bloquea el objeto
En el momento: 2009-8-16 7:56:40, el hilo A libera el objeto
p>En el momento: 2009-8-16 7:56:40, el hilo B bloquea el objeto
En el momento: 2009-8-16 7:56:45, hilo B libera el objeto
En el momento: 2009-8-16 7:56:45, el hilo A bloquea el objeto
En el momento: 2009-8-16 7:56: 50, hilo hilo A Liberar el objeto
En el momento: 2009-8-16 7:56:50, hilo El hilo B bloquea el objeto
En el momento: 2009-8-16 7:56:55, el hilo B libera el objeto
En el momento: 2009-8-16 7:56:55, el hilo A bloquea el objeto
En el momento: 2009- 8-16 7:57:00, el subproceso A libera el objeto
En el momento: 2009-8-16 7:57:00, el subproceso B bloquea el objeto
En el momento: 2009-8-16 7:57:05, Thread Thread B libera el objeto