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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 欧阳博 中级黑马   /  2012-3-1 17:09  /  2690 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

启动一个线程是run()还是start()呢,为什么?,两者有什么区别?

7 个回复

正序浏览
start方法。如果使用run方法,只是启动了那个类中的run方法,只有启动start方法,才是启动r线程
回复 使用道具 举报
本帖最后由 黄业凌 于 2012-3-2 17:22 编辑

启动线程中
先看Java API 1.5.0中关于run()方法与start方法的介绍

run()方法里存储是内容是被线程执行的内容,是等待start()方法启动线程后调用的

start()方法是启动线程,并调用run()方法
回复 使用道具 举报
start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。run方法中存放的是线程要执行代码。
回复 使用道具 举报
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行,只是进入了可运行状态。直接调用run()方法不会产生线程,而是把它当作普通的方法调用,马上执行。run()方法可以产生必须退出的标志来停止一个线程。
回复 使用道具 举报
start()方法是启动线程 此时被启动的线程没有运行 而是出于可运行和就绪的状态  cpu运行到的时候会自动调用run()方法并开启线程
回复 使用道具 举报
启动一个线程是run()还是start()呢,为什么?,两者有什么区别?
启动时用start() 他本身就包括启动线程和run()  ,run()只是需要启动线程的代码块而已
回复 使用道具 举报
本帖最后由 胡军喜 于 2012-3-1 17:17 编辑

start()方法是启动(即开辟)一个线程的方法,这并不意味着线程就会立即运行,只是进入了可运行状态。因此线程的启动必须通过此方法。
而run()方法,只是Thread类的一个方法,它本身并不能开辟线程,直接调用run()方法不会产生线程,而是把它当作普通的方法调用,马上执行。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马