黑马程序员技术交流社区

标题: 启动一个线程是用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