黑马程序员技术交流社区

标题: 线程的启动问题 [打印本页]

作者: 欧阳博    时间: 2012-3-1 17:09
标题: 线程的启动问题
启动一个线程是run()还是start()呢,为什么?,两者有什么区别?
作者: 胡军喜    时间: 2012-3-1 17:15
本帖最后由 胡军喜 于 2012-3-1 17:17 编辑

start()方法是启动(即开辟)一个线程的方法,这并不意味着线程就会立即运行,只是进入了可运行状态。因此线程的启动必须通过此方法。
而run()方法,只是Thread类的一个方法,它本身并不能开辟线程,直接调用run()方法不会产生线程,而是把它当作普通的方法调用,马上执行。。
作者: 泮和顺    时间: 2012-3-1 17:23
启动一个线程是run()还是start()呢,为什么?,两者有什么区别?
启动时用start() 他本身就包括启动线程和run()  ,run()只是需要启动线程的代码块而已
作者: a504079589    时间: 2012-3-1 19:22
start()方法是启动线程 此时被启动的线程没有运行 而是出于可运行和就绪的状态  cpu运行到的时候会自动调用run()方法并开启线程
作者: 陈斌    时间: 2012-3-1 20:53
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行,只是进入了可运行状态。直接调用run()方法不会产生线程,而是把它当作普通的方法调用,马上执行。run()方法可以产生必须退出的标志来停止一个线程。

作者: 冯兵兵    时间: 2012-3-1 21:06
start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。run方法中存放的是线程要执行代码。
作者: 黄业凌    时间: 2012-3-2 17:20
本帖最后由 黄业凌 于 2012-3-2 17:22 编辑

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

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

start()方法是启动线程,并调用run()方法
作者: xieguanxiong    时间: 2012-3-3 10:31
start方法。如果使用run方法,只是启动了那个类中的run方法,只有启动start方法,才是启动r线程




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