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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 刘海陆 于 2013-5-19 12:56 编辑

代码A :
package cn.itcast;
public class ThreadCreateTest {
/**
  * @param args
  */
public static void main(String[] args) throws Exception{

  System.out.println("main strat");
  
    new Thread(new Thread(){
   @Override
   public void run(){
    while (true) {
     System.out.println(Thread.currentThread().getName());
     System.out.println(this.getName());
     try {
      Thread.sleep(500);
     } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
     
    }
   }
  }).start();
  
  System.out.println("main end");
}
}


代码 B::
package cn.itcast;
public class ThreadCreateTest {
/**
  * @param args
  */
public static void main(String[] args) throws Exception{

  System.out.println("main strat");
  
  Thread thread = new Thread(){
   @Override
   public void run()  {
    // TODO Auto-generated method stub
    while(true){
     System.out.println(Thread.currentThread().getName());
     System.out.println(this.getName());
     try {
      Thread.sleep(1000);
     } catch (Exception e) {
      // TODO: handle exception
     }
    }
   }
   
  };
  thread.start();
  
  
  System.out.println("main end");
}
}


代码A 运行的结果是 thread1 thread0 两个线程的名字
代码B 运行的结果是 只有 thread0 一个线程的名字

没想明白,为什么代码A运行的时候,会产生两个线程呢,求解,想了好久也没想明白,求解

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

3 个回复

倒序浏览
因为你的A 开启了两个线程啊  
你的B就开启了一个线程, 其实你看看你的A 有两个new ,那就是两个对象
你的B, 就new了一个对象, 然后用这个对象的引用开启线程, 当然就只有一个线程了

当然, 这里我没算主线程

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
嗯,明白了,谢谢哈
回复 使用道具 举报
如果问题已经解决了,那么大家请把帖子的类型改为“已解决”,在自己帖子的左下角点编辑,然后选择帖子的分类进行改正。{:soso_e163:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马