黑马程序员技术交流社区

标题: 问个多线程守护问题 [打印本页]

作者: 谭荣强    时间: 2014-2-26 21:03
标题: 问个多线程守护问题
我这个代码主线程的while循环就是执行不到,找了好久也找不出哪错了
class stopThread implements Runnable
{
        private boolean flag= true;
        public  void run()
        {
                while (flag)
                {
                        System.out.println("InterruptedException run");                 
                }                 
        }
        public void changeFlag()
        {
                flag= false;
        }
}
class day1208
{
        public static void main(String[] args)
        {
                stopThread st = new stopThread();
                Thread t1 = new Thread(st);
                Thread t2 = new Thread(st);
                t1.setDaemon(true);//守护线程
                t2.setDaemon(true);
                t1.start();
                t2.start();
                int num=0;
                while (true)
                {
                        if (num++==700)
                        {
                                //st.changeFlag();
                                //t1.interrupt();
                                //t2.interrupt();
                                break;
                        }
                        System.out.println(Thread.currentThread().getName()+"...."+num);
                        }

                System.out.println("over");
        }
}

作者: 平凡成就非凡    时间: 2014-2-26 21:16
run( )方法中的while,如果一进去就是真,它什么时候推出啊。你是不是搞啦死循环啊

作者: zjf    时间: 2014-2-26 22:10
主线程的while循环是可以执行的,多试几次等久一点就有机会等到的。现在电脑性能好跑得快,你把if (num++==700)里的值设置小点,比如7,主线程就有很大机会抢到的权了
作者: qqwwdr    时间: 2014-2-26 22:22
在  主线程的while循环  中 加入
  1.                                                 try{
  2.                                                         Thread.sleep(10);
  3.                                                 }catch(InterruptedException e){
  4.                                                         e.printStackTrace();
  5.                                                 }
复制代码

同样在守护线程的while循环中也加入上面的代码,就可以看见主线程执行了,
即使 不加入上面的代码,也可以看见效果啊,将主线程中的循环终止条件700 改小一点,效果就比较明显了啊,我测试没什么问题啊
作者: 谭荣强    时间: 2014-2-27 00:14
明白了,我以为改大点才能去掉控制权,我給改成70000了,原来改反了




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