本帖最后由 朱荣宁. 于 2013-3-9 21:42 编辑
我来回答你的这个问题:
首先你要明白 run方法是线程执行时的方法,start是启动线程的方法,所以启动一个线程是用start.
这里我详细给你说一下他们的区别,希望对你有帮助.
我感觉他们最大的区别就是:调用start方法可实现多线程,而调用run方法没有实现多线程
因为用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。
通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,
一旦得到spu时间片,就开始执行run()方法,这里方法run()称为线程体,
它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止.
而run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,
其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,
这样就没有达到写线程的目的。
所以调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。
|