黑马程序员技术交流社区
标题:
多线程问题
[打印本页]
作者:
倉促、尋找你
时间:
2014-1-14 18:40
标题:
多线程问题
new Thread(new Runnable(){ //匿名
public void run(){
System.out.println("runnable run");
}
})
{
public void run(){
System.out.println("subthread run");
}
}.start();
这段代码没看明白,运行结果为什么是“subthread run”这个是怎么调用的?求大神拆分讲解下。
作者:
淡夜清风
时间:
2014-1-14 19:31
new Thread(xxxx)
{
//覆盖了Thread类的run方法
public void run(){
System.out.println("subthread run");
}
}.start();
xxxx就是
new Runnable(){ //匿名
//覆盖了Runnable接口的run方法
public void run(){
System.out.println("runnable run");
}
}
这样能看懂了么?
new Thread(xxxx)... 也是匿名内部类。
因为你的Thread匿名内部类覆盖了Thread类的run方法,所以不会去调用Runnable匿名内部类的run方法,所以输出subthread run。如果不覆盖Thread类的run方法,就会输出runnable run
作者:
孤独的天奇
时间:
2014-1-14 19:58
看不明白,建议你这么用
class MyRunnable implements Runnable
{
public void run()
{
System.out.println("runnable run");
}
}
new Thread(new MyRunnable()).start();
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2