java中线程构造相关代码,求帮忙解释为何如此运行

new Thread(new Runnable(){public void run(){System.out.println("runnable run");}}){public void run(){System.out.println("subthread run");}}.start();运行结果是subthread run,而构造器里也有方法,为何runnable run不输出呢?
2026年09月24日 06:34
有1个网友回答
网友(1):

如上图运行结果(由于里面有线程  所以建议debug一行一行执行看结果)

第一个Thread 直接start 输出的是runnable run
第二个输出的是subthread run 是因为第二个你在{}里面重写了run方法
可以参看例子

在Main类里面我定义了test方法 输出的是test

我直接new Main().test();输出的是test

我要是

new Main(){

    public void test() {

    System.out.println("test 重写");

    }

}.test();

就重写了test方法  所以就会输出 test 重写

你就是现在thread里面定义了  run 然后又重写了  所以输出的subthread run