黑马程序员技术交流社区

标题: 关于Thread.start()与Thread.run()的区别 [打印本页]

作者: popoluno    时间: 2013-6-11 15:54
标题: 关于Thread.start()与Thread.run()的区别
本帖最后由 popoluno 于 2013-6-13 10:20 编辑

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




作者: ljh4282158    时间: 2013-6-11 16:07

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

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

作者: 胡章诚    时间: 2013-6-11 19:33
在java中thread的start()和run()的区别:

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

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



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

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


至于.net,我现在还没见到run(),你可以问问老师,是什么情况
作者: 一直在努力    时间: 2013-6-11 19:39
用start()启动....run()没印象
作者: 蔓越莓    时间: 2013-6-11 20:36
Thread.start()提供线程入口。百度知道一下很多人在说它。Thread.run(),查MSDN没有查到……
作者: 王洪磊    时间: 2013-6-11 20:46
Thread.Start()启动线程
Thread.run()不太懂;
此外,Thread类有几个至关重要的方法:
Thread.Sleep(int)静态方法,暂停当前线程指定的毫秒数
Thread.Abort()通常使用该方法来终止一个线程
Thread.Suspend()该方法并不终止未完成的线程,它仅仅挂起线程,以后还可恢复。
Resume():恢复被Suspend()方法挂起的线程的执行





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2