线程和超级关键字

时间:2015-05-13 13:16:16

标签: java multithreading

以下代码将输出程序A 。请你解释一下super.run();

class RunnableA implements Runnable{
    public void run(){
        System.out.println("Program A");
    }
}

class MyThread extends Thread{
    MyThread(Runnable r){
        //set as a target
        super(r);
    }
    public void run(){
        //System.out.println("MyThread");
        super.run();
    }
}

class Demo{
    public static void main(String args[]){
        RunnableA a1=new RunnableA();
        //a1.start(); //Illegal
        new MyThread(a1).start();
    }
}

1 个答案:

答案 0 :(得分:0)

super.run();表示MyThread run()方法执行Thread的{​​{1}}方法(调用{{1}传递给构造函数的run()实例的方法。

因此run()执行Runnable new MyThread(a1).start();方法并打印RunnableA

在此示例中,run()毫无用处,因为它没有向"Program A"添加任何功能。您可以使用以下命令替换main方法:

MyThread

并获得相同的行为。