/ / Entender hilos en java - java, multihilo

Entendiendo los hilos en java - java, multithreading

Soy bastante nuevo en los conceptos de hilos en JAVAy aunque probé un par de códigos y están funcionando, realmente no entiendo exactamente qué sucede en segundo plano. Por ejemplo, escribí este fragmento de código:

public class myThreadTest implements Runnable {
private static void ping(String text, int count)
throws InterruptedException {
for (int i = 0; i<count; i++) {
System.out.println("ping "+text+i+"...");
Thread.sleep(1000);
}
}
public void run() {
try {
ping("run ",10);
} catch (InterruptedException e) {
}
}
public static void main(String[] args) {
(new Thread(new myThreadTest())).start();
try {
ping("main ", 5);
} catch (InterruptedException e) {
}
}
}

¿hay 2 hilos ejecutándose aquí, uno que se ejecuta desde main y el otro desde el método run? Porque la salida que obtengo es main, run, main, run, run, main ... algo así.

Respuestas

3 para la respuesta № 1

Sí, ambos ejecutándose simultáneamente.

Un hilo es un hilo de ejecución en un programa. La máquina virtual Java permite que una aplicación tenga múltiples hilos de ejecución ejecutándose simultáneamente.

Estoy recomendando esto docs antes de comenzar a codificar. buena suerte


2 para la respuesta № 2

Los subprocesos en Java tienen que ver principalmente con la concurrencia, que es la noción de que sucedan varias cosas al mismo tiempo.

Desde su programa puedo ver que su código está comenzandodos subprocesos en el inicio ejecutando el primer comando el ciclo for durmiendo durante 1 segundo y luego ejecutando el método de ejecución y de ida y vuelta hasta que el ciclo for se agote para que la ejecución continúe


2 para la respuesta № 3

Eso es correcto. Intente imprimir el ID de hilo en tus ping() método para ver que se están ejecutando diferentes subprocesos (también puede nombrar sus subprocesos y lo sigo como una práctica para que pueda entender qué hilo está haciendo qué)


0 para la respuesta № 4

Hay dos hilos. Uno de los hilos se crea y comienza a ejecutar su run método asincrónicamente debido a la start Llamar en el bloque principal. El otro hilo está ejecutando el main método en sí mismo.