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() 方法中的代码将在当前线程中执行。 这就解释了为什么打印出了相同线程名。

results matching ""

    No results matching ""