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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谭荣强 高级黑马   /  2014-2-26 21:03  /  962 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我这个代码主线程的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");
        }
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

4 个回复

倒序浏览
run( )方法中的while,如果一进去就是真,它什么时候推出啊。你是不是搞啦死循环啊

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
主线程的while循环是可以执行的,多试几次等久一点就有机会等到的。现在电脑性能好跑得快,你把if (num++==700)里的值设置小点,比如7,主线程就有很大机会抢到的权了

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
在  主线程的while循环  中 加入
  1.                                                 try{
  2.                                                         Thread.sleep(10);
  3.                                                 }catch(InterruptedException e){
  4.                                                         e.printStackTrace();
  5.                                                 }
复制代码

同样在守护线程的while循环中也加入上面的代码,就可以看见主线程执行了,
即使 不加入上面的代码,也可以看见效果啊,将主线程中的循环终止条件700 改小一点,效果就比较明显了啊,我测试没什么问题啊

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
明白了,我以为改大点才能去掉控制权,我給改成70000了,原来改反了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马