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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 半夜雨半夜雨 中级黑马   /  2013-11-13 13:53  /  1096 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 半夜雨半夜雨 于 2013-11-13 18:33 编辑
  1. class StopThread implements Runnable
  2. {
  3.         private boolean flag =true;
  4.         public  void run()
  5.         {
  6.                 while(flag)
  7.                 {
  8.                         
  9.                         System.out.println(Thread.currentThread().getName()+"....run");
  10.                 }
  11.         }
  12.         public void changeFlag()
  13.         {
  14.                 flag = false;//改变标记
  15.         }
  16. }




  17. class  StopThreadDemo
  18. {
  19.         public static void main(String[] args)
  20.         {
  21.                 StopThread st = new StopThread();
  22.                
  23.                 Thread t1 = new Thread(st);
  24.                 Thread t2 = new Thread(st);

  25.                 t1.start();
  26.                 t2.start();

  27.                 int num = 0;

  28.                 while(true)
  29.                 {
  30.                         if(num++ == 60)
  31.                         {
  32.                                 st.changeFlag();
  33.                                 break;
  34.                         }
  35.                         System.out.println(Thread.currentThread().getName()+"......."+num);
  36.                 }
  37.                 System.out.println("over");
  38.         }
  39. }
复制代码
如上代码,谁能和我说说代码的执行顺序,这个有点混啊

评分

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

查看全部评分

2 个回复

倒序浏览
从主线程开始,
2个分线程开启,但不一定获得执行权(就是抢CPU资源,我也是新手)
这个时候需要看主线程和分线程谁获得了执行权,
如果主线程一直获得执行权一直运行到了st.changeFlag();改变了标记
这个时候分线程直接判断标记为false,还没有打印过,就没有打印机会了。
如果分线程一直拿到执行权,还可以在主线程未运行到st.changeFlag();会一直运行。
直到别的线程拿到执行权才可能发生任意情况。因为每个线程都可能拿到执行权,也可以在运行时被抢走执行权,有很多种可能。所以有很多种结果。

评分

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

查看全部评分

回复 使用道具 举报
qw无语 发表于 2013-11-13 15:03
从主线程开始,
2个分线程开启,但不一定获得执行权(就是抢CPU资源,我也是新手)
这个时候需要看主线程和分 ...

:lol谢了,看了几遍终于弄清楚了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马