黑马程序员技术交流社区

标题: 线程运行疑问? [打印本页]

作者: wupingtanlu    时间: 2012-4-21 12:27
标题: 线程运行疑问?
  在创建线程时,为什么我调用时是用 thread.strat();方法而不是用 thread.run方法呢
  public static void main(String [] args)
{
      创建子线程的对象 thread;//子线程的代码省略了
     thread.start();//    A  处 此方法是创建了 线程 并启用了线程。
     thread.run();//      B  处     此处是创建了线程 但是没用启动线程
      for(int i=0;i<100;i++)
       System.out.println("main------"+i)
}

子线程里面的run方法
public    void run()
{
      for(int i=0;i<100;i++)
       System.out.println("thread------"+i)

}
当用A时注释B  每次运行的结果都不一样
而用B时注释A  每次的运行的结果都是一样的   
    不知道理解的对不对?
作者: 邓斌    时间: 2012-4-21 12:38
thread.run  中方法是只是将代码存储在线程中,让线程运行这段代码
thread.strat();  这个有2个作用。启动线程。调用run方法。

理解是正确的。
作者: 萌小子    时间: 2013-5-24 17:38
调用start()方法后,线程不一定马上运行,有可能去执行下面的语句。所以结果是不能确定的。
而直接调用run()方法,是执行完run方法体后才会往下执行,所以结果是确定的。你的理解不错,不过还不够深




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