嗨,我无法找到获得此输出的原因。我理解的第一项输出,但我无法理解的第二行。我是线程技术的新手,我用谷歌搜索,但仍存疑问。有人可以解释一下吗?

输出为:

Inside ThreadEx
Inside ThreadEx


这是我的代码:

class ThreadEx extends Thread {

    ThreadEx() {}

    ThreadEx(Runnable r)
    {
        super(r);
    }

    public void run()
    {
        System.out.println("Inside ThreadEx");
    }
}

class RunnableEx implements Runnable {

    @Override
    public void run() {
        System.out.println("Inside RunnableEx ");
    }
}

public class Test4 {

    public static void main(String[] args) {

        new ThreadEx().start();
        new ThreadEx(new RunnableEx()).start();
    }
}

最佳答案

这是因为您在run()类中覆盖了ThreadEx方法。如果您使用

new Thread(new RunnableEx()).start()


代替

new ThreadEx(new RunnableEx()).start()


您会看到预期的输出(我想预期的输出是Inside ThreadEx Inside RunnableEx

07-27 19:40