黑马程序员技术交流社区
标题:
启动一个线程是用run()还是start()?
[打印本页]
作者:
赵玮
时间:
2011-12-23 12:06
标题:
启动一个线程是用run()还是start()?
本帖最后由 赵玮 于 2011-12-25 16:36 编辑
启动一个线程是用run()还是start()?
作者:
六期刘健
时间:
2011-12-23 12:09
start()
作者:
杨强
时间:
2011-12-23 12:12
Tread类中start()方法是开始线程的方法。start()方法会用特殊的方法自动调用run()方法。run()方法是Tread的具体实现。
你继承了Thread类后就通过重写run()方法来说明线程的行为,调用start()方法来开始线程。
作者:
yunqiangshan
时间:
2011-12-23 12:19
将要运行的代码写入run()方法内,调用start()方法,程序会自动调用run()方法。
作者:
陈帅雷
时间:
2011-12-23 12:19
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
作者:
黑马巩伟伟
时间:
2011-12-23 12:31
通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,
并没有运行。然后通过此Thread类调用方法run()来完成其运行操作的,这里方
法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,
此线程终止,而CPU再运行其它线程。
如果直接用Run方法,这只是调用一个方法而已,程序中依然只有主线
程--这一个线程,其程序执行路径还是只有一条,这样就没有达到写线程的目的。
作者:
张绍成
时间:
2011-12-23 20:20
start() 方法是启动线程的;run方法是线程中的执行体!
当你调用了 start() 方法时,改方法回去调用run()方法;
可是这和你直接调用 run()方法执行的结果是不一样的!
作者:
于汝国
时间:
2011-12-23 21:36
start()用来启动线程,这时无需等待run()方法体代码执行完毕而直接继续执行下面的代码:通过调用Thread类的start()方法此线程处于就需状态并没有运行,然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,她包含了要执行这个线程的内容,run方法运行结束,此线程终止。而cpu再运行其他线程。
run()当做普通的方法调用,程序还是要顺序执行,还是要等待run方法体执行完毕后才执行下面的代码,而如果直接用run方法,这只是调用一个方法而已,程序中依然只有主程序这一个线程,其程序执行路径还是一条,这样就没有达到写线程的目的。
举例说明:
public class TestThread(){
public static void main(String []args){
Runner1 r = new Runner1();
//r.run();//这是方法调用,而不是开启一个线程
Thread t = new Thread());//调用了Thread(Runnable target)方法。且父类对象变量指向子类对象。
t.start();
}
}
class Runner1 implements Runnable{//实现了这个接口,jdk就知道这个类是一个线程
public void run(){
for(int j=0;j<100;j++){
System.out.println("进入Runner1运行状态");
System.out.println(j);
}
}
}
for(int i=0;i<100;i++){
System.out.println("进入了mianThread的运行方法");
System.out.println(i);
}
作者:
冯瑞君老师
时间:
2011-12-24 15:07
strat()啊 中文翻译后也是它啊,无悬念。run是线程中的一个方法,你用线程做什么,就在线面写。
作者:
陈浩
时间:
2011-12-24 15:51
用start()方法启动线程,run()是Runnable 接口里面的方法,在继承Runnable 接口后须复写run()方法.
作者:
张一凡
时间:
2011-12-28 23:37
start()是启动线程,run()是引用Runnable 接口里面的方法 LS的都说的不错
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2