本帖最后由 袁錦泰 于 2012-5-24 14:35 编辑
你的问题是这个内部类中分既继承Thread类又实现Runnable接口后,在线程执行的时候下面的两个run()方法中执行的是哪个,对吧?我来为你讲解这个问题.
1.创建并启动线程有两种方式,但它们的共性特点都是要调用start()方法后才能真正启动线程,这里只见到一个start()方法,所以可以断定你这里只启动了一条线程.
2.Thread类中的run()方法也是通过实现Runnable接口后得到的,当你继承Thread类后没有复写其run()方法时,就会返回查看父类Thread的run()方法,这时就会去查找实现Runnable接口后的子类run()方法.
3.即便你忘记了上面两点,也可以通过添加输出语句来验证到底是哪个run()方法在执行.
注意:这里的确有两条线程,实现Runnable接口后你的确创建了线程,但是没有启动线程.
第2点可以通过查看源码得到答案,而且楼上那位同学也解释了一下,这一点我可能说的不够清楚,不过没关系,不理解再联系我! |