class A implements Runnable { public void run() { System.out.println(Thread.currentThread().getName()); } } class B implements Runnable { public void run() { new A().run(); new Thread(new A(), "name_thread2").run(); new Thread(new A(), "name_thread3").start(); } } public class Main { public static void main(String[] args) { new Thread(new B(), "name_thread1").start(); } } |
¿Cuál es la salida?
============================ name_thread1 name_thread1 name_thread3 ============================
La diferencia entre «new Thread (new A (),» name_thread2 «). Run ();» y «new Thread (new A (),» name_thread3 «). Start ();» es que el método start () crea un nuevo hilo y ejecuta el método run en ese hilo. Si invoca el método run () directamente, el código del método run se ejecutará en el hilo actual. Esto explica por qué el código imprime dos líneas con el mismo nombre de hilo.