Red de conocimiento informático - Aprendizaje de programación - Problemas de programación Java: subprocesos múltiples

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;

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