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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 何超 于 2013-11-10 21:40 编辑
  1. class StopThread implements Runnable
  2. {
  3.         private boolean flag=true;
  4.         public void run()
  5.         {
  6.                 while(flag)
  7.                 {
  8.                         System.out.println(Thread.currentThread().getName()+"...run");
  9.                 }
  10.         }
  11.         public void changeFlag()
  12.         {
  13.                 flag=false;
  14.         }
  15. }
  16. class StopThreadDemo
  17. {
  18.         public static void main(String[] args)
  19.         {
  20.                 StopThread st=new StopThread();

  21.                 Thread t1=new Thread(st);
  22.                 Thread t2=new Thread(st);

  23.                 t1.start();
  24.                 t2.start();

  25.                 int num=0;

  26.                 while(true)
  27.                 {
  28.                         if(num++==60)
  29.                         {
  30.                                 st.changeFlag();
  31.                                 break;
  32.                         }
  33.                         System.out.println(Thread.currentThread().getName()+"....."+num);
  34.                 }
  35.         }
  36. }
复制代码
第一个图片是我的运行结果   第二个是毕老师的  求告知为什么毕老师的结果是这样   怎么想也想不通  就这么点代码  我反复看了好多遍跟毕老师的一模一样啊

评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
那个输出语句被注释了吧?
回复 使用道具 举报
hurryup 发表于 2013-11-9 21:05
那个输出语句被注释了吧?

没注释掉  你看毕老师最后的结果有那两个线程···
回复 使用道具 举报
你们结果一样的啊!毕老师的出现的结果是因为线程一和线程二,一直没抢到Cpu执行权导致的,所以直到主线程运行完,线程一和二才被CPU执行,执行一次后,由于主线程改变了flag值,导致线程被停止。
你的结果则是因为:线程一,线程二和主线程一直在抢CPU执行权,并且抢到了,所以和主线程交替运行。直到主线程改变flag值,停止线程。
回复 使用道具 举报
这是我电脑的运行结果(像这种简单的多线程各个电脑运行结果是会有差别的,跟Cpu效率有关,估计是毕老师电脑性能差点吧,Cpu切换速度慢,才一直被主线程霸着不放手。。。哈哈):

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
何超 中级黑马 2013-11-10 21:39:33
7#
Clare0621 发表于 2013-11-10 10:28
这是我电脑的运行结果(像这种简单的多线程各个电脑运行结果是会有差别的,跟Cpu效率有关,估计是毕老师电 ...

:L我开始也是这样想···但是一想到主线程都运行完了其他两个线程才抢到执行权  这样的概率太低了···= = 所以才很纠结到底是什么原因···
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马