黑马程序员技术交流社区
标题: 启动一个线程是用run()还是用start() [打印本页]
作者: 大牙到潍坊 时间: 2013-12-1 12:13
标题: 启动一个线程是用run()还是用start()
本帖最后由 大牙到潍坊 于 2013-12-2 23:17 编辑
启动一个线程是用run()还是用start()
作者: u010209195 时间: 2013-12-1 13:36
1.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码:
通过调用Thread类的start()方法来启动一个线程,
这时此线程是处于就绪状态,
并没有运行。
然后通过此Thread类调用方法run()来完成其运行操作的,
这里方法run()称为线程体,
它包含了要执行的这个线程的内容,
Run方法运行结束,
此线程终止,
而CPU再运行其它线程,
2.run()方法当作普通方法的方式调用,程序还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码:
而如果直接用Run方法,
这只是调用一个方法而已,
程序中依然只有主线程--这一个线程,
其程序执行路径还是只有一条,
这样就没有达到写线程的目的。
作者: 许庭洲 时间: 2013-12-1 16:19
1. C# 应用程序中创建一个新线程:System.Threading.ThreadnewThread;
newThread= new System.Threading.Thread(anObject.AMethod);
2.在 C# 应用程序中启动一个新线程:newThread.Start()
作者: 土豆泥 时间: 2013-12-1 16:21
1) start:
用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到spu时间片,就开始执行run()方法,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。
2) run:
run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。
总结:调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。
作者: V_John 时间: 2013-12-1 16:22
如果问题得到解决,请修改为已解决
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |