资讯详情

博洋教育JAVA培训:Thread的start和run的区别

2012-09-24 阅读:413 来源:福州博洋教育
进入>

最近看到一个题目,代码如下:

public static void main(String args[]) {

Thread t = new Thread() {

public void run() {

pong();

}

};

t.run();

System.out.println("ping");

}

static void pong() {

System.out.println("pong");

}

问,结果会输出什么?

我运行了很多次,结果都是pong ping.后来终于发现了关键点所在,线程对象t,调用的不是start()方法,而是run()方法。后来我开断点模式debug,发现调用run()方法,整个程序只有一个线程,而调用start()方法之后,程序就会多出一个线程。这时才有和主线程争cpu,可能出现多种结果的情况,但由于下面输出方法很快就被执行了,所以基本上都是"ping pong"的输出。

所以run()和start()的区别就是:

run()是Runnable接口中定义:的一个方法,是为了让客户程序员在这个方法里写自己的功能代码的。直接调用和普通的类调用自己的成员方法是没有任何区别的。

而start()则是线程开始运行的标志,当这个方法被调用后,程序中才会多出一个独立的线程,接着便是执行run()方法。

所以我觉得,自己要写单独的线程,最好还是继承Thread来做,如果是实现接口的话,到主线程里,还是要new Thread(new YourRunnableClass())来调用,感觉很不方便。

博洋教育(http://www.softfz.com/)教师简介:邹宗冰,高级java讲师、7年教学经验。

精通J2SE中的I/O流编程、网络编程、线程技术及J2EE平台架构等,熟练运用J2EE平台架构中的各项技术构建和部署J2EE系统;对使用Struts、JDBC、Hibernate、EJB、IBatis、Spring等框架技术构建有丰富的经验。熟练使用Oracle和SQLServer数据库,塾悉Oracle的体系框架架构;熟练使用Exp/Imp、Rman、OS等对数据库进行备份和恢复的处理。熟练开源的各种应用部署工具和配置应用程序。

加载全文

免责声明:本站部分内容、图片来自用户自主上传,如果您对本站信息资源版权的归属问题存有异议,请您致信,我们会立即做出答复并及时解决。如果您认为本站有侵犯您权益的行为,请通知我们,我们一定根据实际情况及时处理。

以上是福州博洋教育为大家整理的有关博洋教育JAVA培训:Thread的start和run的区别的全部内容,更多精彩请访问学习资讯新闻专栏。

相关课程

更多>
2020猎学网广告栏
申请课程免费试听名额

课程顾问24小时内联系您

你好

顾问将于24小时内联系您!

确定
在线咨询 微信咨询 立即报名
申请1对1课程顾问咨询服务
×
你好

顾问将于24小时内联系您!

确定
福州猎学网 >福州博洋教育 >博洋教育JAVA培训:Thread的start和run的区别