程序如下:
- <DIV class=blockcode>
- <BLOCKQUOTE>class StopThread implements Runnable
- {
- boolean flag=true;
- public void run()
- {
- while (flag)
- {
- System.out.println(Thread.currentThread().getName()+"......run");
- }
- }
- public void changeFlag()
- {
- flag=false;
- }
- }
- class StopThreadDemo
- {
- public static void main(String[] args)
- {
- StopThread st=new StopThread();
- Thread t1=new Thread(st);
- Thread t2=new Thread(st);
- t1.start();
- t2.start();
- int x=0;
- while(true)
- {
- if(x++==60)
- {
- st.changeFlag();
- break;
- }
- System.out.println(Thread.currentThread().getName()+"............."+x);
- }
- }
- }
复制代码 运行结果如下:
记得毕老师讲过,用while去判断flag,就可以让while循环中内容先去判断flag,
如果为true,执行while中的语句,如果为false,则不会执行while中的语句,如果
按照这一理论,当x=60后,flag被改成false,那么while中的线程应该先判断flag为
false,就不会再输出Thread-1.......run和Thread-0........run了,但是运行结果每次
输出,这是为什么呢?并且最后都是输出两个。请大家帮忙看下,谢谢啦~~
|