黑马程序员技术交流社区

标题: 多线程的一个问题 [打印本页]

作者: 张迁    时间: 2013-5-11 22:37
标题: 多线程的一个问题
本帖最后由 张迁 于 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. }
复制代码

作者: hou604720966    时间: 2013-5-11 22:58
while (true)是个while循环啊
作者: 337091921    时间: 2013-5-11 23:50
你没有调用set方法啊,里面的false也没法运行啊,在主函数中用对象调用一下,结果肯定不同吧

作者: 张迁    时间: 2013-5-11 23:54
hou604720966 发表于 2013-5-11 22:58
while (true)是个while循环啊

对啊,while循环里面不是调用了set()方法,把flag改为false了吗?那么线程里面的run()不就不能输出了吗?
作者: hou604720966    时间: 2013-5-12 08:20
张迁 发表于 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.                }
复制代码
你这段代码就在不停的打印
作者: 曹睿翔    时间: 2013-5-12 10:09
及时更改问题状态,点编辑改为已解决




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