黑马程序员技术交流社区
标题:
多线程中run方法遇到的问题,请高手指点!!!!
[打印本页]
作者:
yinxjfly
时间:
2014-6-21 21:57
标题:
多线程中run方法遇到的问题,请高手指点!!!!
class ThreadTest
{
public static void main(String[] args)
{
Thread t1=new Thread(new Runnable()
{
public void run()
{
System.out.println("RunnableRUN().........run!");
}
})
{
public void run()
{
System.out.println("ThreadRUN().........run!");
}
};
t1.start();
}
}
运行结果为什么是Thread类中的run方法(ThreadRUN().........run!),
而不是Runbale接口中的run方法??
作者:
黎志勇
时间:
2014-6-21 22:16
本帖最后由 黎志勇 于 2014-6-21 22:17 编辑
1.png
(31.3 KB, 下载次数: 22)
下载附件
2014-6-21 22:12 上传
上图是Thread类中,run()方法的源码,可以看到,默认的run()方法是判断是否有传入Runnable对象,有则执行Runnable对象的run()方法。
现在你把匿名Thread类的run方法覆写了,就不存在上述的判断是否有传入Runnable对象并执行执行Runnable对象的run()的操作了。
作者:
姿_`态
时间:
2014-6-21 23:08
楼主的代码可以分为下面两个 ,两个都是可以运行的,我们都知道,多线程有两种实现方法,一种是继承Thread,一种是实现runnable,按照楼主的代码,程序首先会创建线程,先看runnable的run方法,然后到了Thread的run方法,Thread的run方法,把runnable的覆盖了,所以会执行Thread的run方法,
最后开启线程。
class ThreadTest4
{
public static void main(String[] args)
{
Thread t1=new Thread()
{
public void run()
{
System.out.println("ThreadRUN().........run!");
}
};
t1.start();
}
}
=============================================================================
class ThreadTest3
{
public static void main(String[] args)
{
Thread t1=new Thread(new Runnable()
{
public void run()
{
System.out.println("RunnableRUN().........run!");
}
});
t1.start();
}
}
作者:
endian11
时间:
2014-6-21 23:21
我同意上楼的人的回答,认为有点道理
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2