Agregue el código primero
Crear un nuevo hilo, el código es el siguiente:
paquete com.thread.test; public class mythread extiende el hilo {nombre de cadena privada; public mythread (nombre de cadena) {this.name = name; } @Override public void run () {for (int i = 0; i <100; i ++) {system.out.println (nombre+"["+i+"]"); } super.run (); }}Luego cree una nueva clase de prueba, el código es el siguiente:
El paquete com.thread.test;/** 0-50 ejecuta el hilo principal, 50-100 ejecuta el hilo A, y el hilo principal continuará ejecutándose después de que el hilo se ejecute completamente*/public class ThreadDemo {public static void main (string [] args) {mythread t = new mythread ("a"); t.Start (); for (int i = 0; i <100; i ++) {if (i> 50) {try {t.Join (); } catch (InterruptedException e) {E.PrintStackTrace (); }} System.out.println ("hilo principal"+"["+i+"]"); }}}La siguiente es una explicación del método de unión en el hilo en la plataforma Java SE8 API:
Public Final Void Join (Long Millis) lanza interruptedExceptionswaits en la mayoría de los milis de millones de milisegundos para que este hilo muera. Un tiempo de espera de 0 significa esperar para siempre. Esta implementación utiliza un bucle de esto. Llamadas de WAIT condicionadas en esto. Como un hilo termina el método this.notifyAll se invoca. Se recomienda que las aplicaciones no usen Wait, Notify o Notifyalt en instancias de subprocesos. PARÁMETRES: Millis: el tiempo para esperar en millones de segundos lanza: ilegalargumentException: si el valor de milis es negativo interruptedexception, si algún hilo ha interrumpido el hilo actual. El estado interrumpido del hilo actual se borra cuando se lanza esta excepción.
Agregue el código primero
Crear un nuevo hilo, el código es el siguiente:
paquete com.thread.test; public class mythread extiende el hilo {nombre de cadena privada; public mythread (nombre de cadena) {this.name = name; } @Override public void run () {for (int i = 0; i <100; i ++) {system.out.println (nombre+"["+i+"]"); } super.run (); }}Luego cree una nueva clase de prueba, el código es el siguiente:
El paquete com.thread.test;/** 0-50 ejecuta el hilo principal, 50-100 ejecuta el hilo A, y el hilo principal continuará ejecutándose después de que el hilo se ejecute completamente*/public class ThreadDemo {public static void main (string [] args) {mythread t = new mythread ("a"); t.Start (); for (int i = 0; i <100; i ++) {if (i> 50) {try {t.Join (); } catch (InterruptedException e) {E.PrintStackTrace (); }} System.out.println ("hilo principal"+"["+i+"]"); }}}La siguiente es una explicación del método de unión en el hilo en la plataforma Java SE8 API:
Public Final Void Join (Long Millis) lanza interruptedExceptionswaits en la mayoría de los milis de millones de milisegundos para que este hilo muera. Un tiempo de espera de 0 significa esperar para siempre. Esta implementación utiliza un bucle de esto. Llamadas de WAIT condicionadas en esto. Como un hilo termina el método this.notifyAll se invoca. Se recomienda que las aplicaciones no usen Wait, Notify o Notifyalt en instancias de subprocesos. PARÁMETRES: Millis: el tiempo para esperar en millones de segundos lanza: ilegalargumentException: si el valor de milis es negativo interruptedexception, si algún hilo ha interrumpido el hilo actual. El estado interrumpido del hilo actual se borra cuando se lanza esta excepción.
Mi propio entendimiento es que entrará con fuerza en el hilo utilizando el método de unión, y otros hilos esperarán hasta que el hilo se ejecute completamente antes de entrar.