A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© popoluno 中级黑马   /  2013-6-11 15:54  /  1312 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 popoluno 于 2013-6-13 10:20 编辑

Thread.start()与Thread.run()这两个方法都可以开启线程,究竟有什么区别呢?
求详细解释,谢谢



评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

6 个回复

倒序浏览

Thread.start()是启动线程的。Thread.run()貌似很少用的额、做等高手来回答
回复 使用道具 举报
本帖最后由 无__畏 于 2013-6-11 16:16 编辑

start为线程入口,通过它启动线程。
run为实际代码执行段,它只是一个方法,用的main的这个线程,而不是启动了一个新的线程
貌似framework4.5没有这个方法了,我的vs2012就没有了。  也没有用到过

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
在java中thread的start()和run()的区别:

1.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行新代码,执行方式如下:

通过调用Thread类的start()方法来启动一个线程,
这时此线程是处于就绪状态,
并没有运行。
然后通过此Thread类调用方法run()来完成其运行操作的,
这里方法run()称为线程体,
它包含了要执行的这个线程的内容,
Run方法运行结束,
此线程终止,
而CPU再运行其它线程,



2.run()方法当作普通方法的方式调用,程序还是要顺序执行,还是要等待run方法体执行完毕后才可继续执,执行方式如下:

而如果直接用Run方法,
这只是调用一个方法而已,
程序中依然只有主线程--这一个线程,
其程序执行路径还是只有一条,
这样就没有达到写线程的目的。


至于.net,我现在还没见到run(),你可以问问老师,是什么情况

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
用start()启动....run()没印象
回复 使用道具 举报
Thread.start()提供线程入口。百度知道一下很多人在说它。Thread.run(),查MSDN没有查到……

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
Thread.Start()启动线程
Thread.run()不太懂;
此外,Thread类有几个至关重要的方法:
Thread.Sleep(int)静态方法,暂停当前线程指定的毫秒数
Thread.Abort()通常使用该方法来终止一个线程
Thread.Suspend()该方法并不终止未完成的线程,它仅仅挂起线程,以后还可恢复。
Resume():恢复被Suspend()方法挂起的线程的执行

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马