Java 线程:关于 overriding 的小例子
原文地址: http://www.programcreek.com/2009/02/a-java-thread-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();
}
}
输出结果会是什么?
============================
name_thread1
name_thread1
name_thread3
============================
new Thread(new A(),"name_thread2").run(); 与 new Thread(new A(),"name_thread3").start(); 之间的差异是 start() 方法会创建一个新线程,并执行这个新线程中的 run() 方法。 如果直接调用 run() 方法,run() 方法中的代码将在当前线程中执行。 这就解释了为什么打印出了相同线程名。