你这个代码写得有够简介的。。。不过简洁过头了,就不利于阅读了。你这个问题其实很好回答。你的th2的这个写法,相当于你直接新建了一个继承了Thread类的子类的实例化对象,并指向了th2。你也在构造方法中传入了一个Runnable类的子类实例化对象了,观察Thread类的源码可以发现,Thread类的run方法是直接调用传入的Runnable类的实例化对象的run方法的。但是,你的代码中,这个th2指向的Thread类的实例化对象却覆盖了run方法,根据多态的特点,调用的其实是被覆盖的子类方法。那就是说,并没有调用到你传入的Runnable类对象的run方法。所以才会输出你现在看到的结果。 |