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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张迁 中级黑马   /  2013-5-11 22:37  /  1156 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张迁 于 2013-5-12 20:32 编辑

主线程运行已经将flag改为false,其他线程应该就不运行了,为什么输出结果还仍然有运行呢?
  1. class Demo1 {
  2.         public static void main(String[] args) {
  3.                 Stop st = new Stop();
  4.                 Thread t1 = new Thread(st);
  5.                 Thread t2 = new Thread(st);
  6.                 t1.start();
  7.                 t2.start();
  8.                 int num = 1;
  9.                 while (true){
  10.                         if (++num == 50){
  11.                                 st.set();
  12.                                 break;
  13.                         }
  14.                         System.out.println(Thread.currentThread().getName()+"------"+num);
  15.                 }
  16.                 System.out.println("over");
  17.         }
  18. }

  19. class Stop implements Runnable{
  20.         private boolean flag = true ;
  21.         public void run(){
  22.                 while (flag){
  23.                         System.out.println(Thread.currentThread().getName()+"adasd");
  24.                 }
  25.         }
  26.         public void set(){
  27.                 flag = false;
  28.         }
  29. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
while (true)是个while循环啊
回复 使用道具 举报
你没有调用set方法啊,里面的false也没法运行啊,在主函数中用对象调用一下,结果肯定不同吧
回复 使用道具 举报
hou604720966 发表于 2013-5-11 22:58
while (true)是个while循环啊

对啊,while循环里面不是调用了set()方法,把flag改为false了吗?那么线程里面的run()不就不能输出了吗?
回复 使用道具 举报
张迁 发表于 2013-5-11 23:54
对啊,while循环里面不是调用了set()方法,把flag改为false了吗?那么线程里面的run()不就不能输出了吗? ...
  1. while (true){

  2. 10.                        if (++num == 50){

  3. 11.                                st.set();

  4. 12.                                break;

  5. 13.                        }

  6. 14.                        System.out.println(Thread.currentThread().getName()+"------"+num);

  7. 15.                }
复制代码
你这段代码就在不停的打印
回复 使用道具 举报
及时更改问题状态,点编辑改为已解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马