黑马程序员技术交流社区
标题:
问个多线程守护问题
[打印本页]
作者:
谭荣强
时间:
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循环 中 加入
try{
Thread.sleep(10);
}catch(InterruptedException e){
e.printStackTrace();
}
复制代码
同样在守护线程的while循环中也加入上面的代码,就可以看见主线程执行了,
即使 不加入上面的代码,也可以看见效果啊,将主线程中的循环终止条件700 改小一点,效果就比较明显了啊,我测试没什么问题啊
作者:
谭荣强
时间:
2014-2-27 00:14
明白了,我以为改大点才能去掉控制权,我給改成70000了,原来改反了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2