Java Thread: an overridding example code
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(); } }
Output - name_thread1 name_thread1 name_thread3
区别在于“new Thread(new A(), "name_thread2").run();” 和 “new Thread(new A(), "name_thread3").start();”之间,the start() 方法创建了new Thread,执行线程的运行方法,如果你直接调用run()方法,运行中的代码将在当前线程执行,这也就是解释为什么代码打印两行相同的线程的名字。