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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wupingtanlu 中级黑马   /  2012-4-21 12:27  /  2425 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  在创建线程时,为什么我调用时是用 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  每次的运行的结果都是一样的   
    不知道理解的对不对?

2 个回复

倒序浏览
thread.run  中方法是只是将代码存储在线程中,让线程运行这段代码
thread.strat();  这个有2个作用。启动线程。调用run方法。

理解是正确的。
回复 使用道具 举报
调用start()方法后,线程不一定马上运行,有可能去执行下面的语句。所以结果是不能确定的。
而直接调用run()方法,是执行完run方法体后才会往下执行,所以结果是确定的。你的理解不错,不过还不够深
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马