如上图运行结果(由于里面有线程 所以建议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