黑马程序员技术交流社区

标题: 多线程的run和start方法 [打印本页]

作者: sishuidliunian    时间: 2016-6-3 13:15
标题: 多线程的run和start方法
一般来说,启动线程是使用start()方法,为什么不用run()方法呢,
我试过使用run()方法也可以得到相同效果啊,还是在一些特殊情况会出错?
作者: android_vae    时间: 2016-6-3 14:17
你确定直接调用run方法是新开了一个线程而不是在主线程中执行的?
作者: 孟小垚    时间: 2016-6-3 14:22
使用run()方法你只是调用这个类中的方法不是使用多线程。
作者: sishuidliunian    时间: 2016-6-3 15:25
android_vae 发表于 2016-6-3 14:17
你确定直接调用run方法是新开了一个线程而不是在主线程中执行的?

我的意思是除开多线程,就只开一个线程而言run()和start()有区别吗
作者: BeDevil    时间: 2016-6-3 18:13
执行start()方法的时候,会调用run方法,并且启动一个新的线程,如果直接调用run方法,则不会启动新的线程
作者: ljd    时间: 2016-6-3 19:26
执行start()方法的时候,首先会启动一个新的线程,然后JVM去调用run()方法
而run()方法只是作为一个普通的方法被调用
作者: cofujun    时间: 2016-6-3 21:58
支持多多I支持
作者: android_vae    时间: 2016-6-4 09:45
sishuidliunian 发表于 2016-6-3 15:25
我的意思是除开多线程,就只开一个线程而言run()和start()有区别吗

调用start肯定会新开一个线程,而直接调用run方法就只在当前线程上运行里面的代码
作者: android_vae    时间: 2016-6-4 09:46
sishuidliunian 发表于 2016-6-3 15:25
我的意思是除开多线程,就只开一个线程而言run()和start()有区别吗

调用start肯定会新开一个线程,而直接调用run方法就只在当前线程上运行里面的代码




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