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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sishuidliunian 中级黑马   /  2016-6-3 13:15  /  786 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一般来说,启动线程是使用start()方法,为什么不用run()方法呢,
我试过使用run()方法也可以得到相同效果啊,还是在一些特殊情况会出错?

8 个回复

倒序浏览
你确定直接调用run方法是新开了一个线程而不是在主线程中执行的?
回复 使用道具 举报
使用run()方法你只是调用这个类中的方法不是使用多线程。
回复 使用道具 举报
android_vae 发表于 2016-6-3 14:17
你确定直接调用run方法是新开了一个线程而不是在主线程中执行的?

我的意思是除开多线程,就只开一个线程而言run()和start()有区别吗
回复 使用道具 举报
执行start()方法的时候,会调用run方法,并且启动一个新的线程,如果直接调用run方法,则不会启动新的线程
回复 使用道具 举报
执行start()方法的时候,首先会启动一个新的线程,然后JVM去调用run()方法
而run()方法只是作为一个普通的方法被调用
回复 使用道具 举报
支持多多I支持
回复 使用道具 举报
sishuidliunian 发表于 2016-6-3 15:25
我的意思是除开多线程,就只开一个线程而言run()和start()有区别吗

调用start肯定会新开一个线程,而直接调用run方法就只在当前线程上运行里面的代码
回复 使用道具 举报
sishuidliunian 发表于 2016-6-3 15:25
我的意思是除开多线程,就只开一个线程而言run()和start()有区别吗

调用start肯定会新开一个线程,而直接调用run方法就只在当前线程上运行里面的代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马