En el ejemplo anterior, el método de unión de la clase Thread se utiliza muchas veces. Creo que habrás adivinado cuál es la función del método de unión. Sí, la función del método de unión es convertir el hilo de ejecución asincrónica en una ejecución sincrónica. Es decir, cuando se llama al método de inicio de la instancia del hilo, este método regresará inmediatamente. Si necesita usar un valor calculado por este hilo después de llamar al método de inicio, debe usar el método de unión. Si no utiliza el método de unión, no hay garantía de que cuando se ejecute una declaración después del método de inicio, se ejecutará el hilo. Después de usar el método de unión, el programa no continuará ejecutándose hasta que este hilo salga. El siguiente código demuestra el uso de join.
Copie el código de código de la siguiente manera:
paquete de mitos;
clase pública JoinThread extiende Thread
{
público estático int n = 0;
estático sincronizado vacío inc()
{
n++;
}
ejecución pública vacía()
{
para (int i = 0; i < 10; i++)
intentar
{
Cª();
sleep(3); // Para que los resultados de la ejecución sean más aleatorios, retrasa 3 milisegundos.
}
captura (Excepción e)
{
}
}
public static void main (String[] args) lanza una excepción
{
Hilos de hilo[] = nuevo hilo[100];
for (int i = 0; i < threads.length; i++) // Crea 100 hilos
hilos[i] = nuevo JoinThread();
for (int i = 0; i < threads.length; i++) // Ejecuta los 100 hilos recién creados
hilos[i].start();
si (args. longitud > 0)
for (int i = 0; i < threads.length; i++) // Continuar después de que se hayan ejecutado los 100 subprocesos
hilos[i].join();
System.out.println("n=" + JoinThread.n);
}
}
En la rutina 2-8, se crean 100 subprocesos y cada subproceso aumenta la variable estática n en 10. Si se genera n después de ejecutar los 100 subprocesos, el valor de n debe ser 1000.
1. Prueba 1
Utilice el siguiente comando para ejecutar el programa anterior:
Copie el código de código de la siguiente manera:
java mythread.JoinThread
Los resultados de ejecutar el programa son los siguientes:
Copie el código de código de la siguiente manera:
n=442
Este resultado de ejecución puede tener algunas diferencias en diferentes entornos de ejecución, pero generalmente n no será igual a 1000. A partir de los resultados anteriores, podemos estar seguros de que se genera n antes de que se ejecuten los 100 subprocesos.
2. Prueba 2
Ejecute el código anterior usando el siguiente comando:
Hay un parámetro de unión en la línea de comando anterior. De hecho, se puede usar cualquier parámetro en la línea de comando, siempre que haya un parámetro que se use aquí solo para indicar que el método de unión se usa para sincronizar la ejecución de. estos 100 hilos.
Los resultados de ejecutar el programa son los siguientes:
Copie el código de código de la siguiente manera:
norte=1000
No importa en qué entorno operativo ejecute el comando anterior, obtendrá el mismo resultado: n=1000. Esto demuestra completamente que se deben haber ejecutado los 100 subprocesos, por lo tanto, n debe ser igual a 1000.