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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 孙百鑫 于 2013-6-27 07:52 编辑
  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  Demo
  18. {
  19.         public static void main(String[] args)
  20.         {
  21.                 StopThread st = new StopThread();               
  22.                 Thread t1 = new Thread(st);
  23.                 Thread t2 = new Thread(st);
  24.                 t1.start();
  25.                 t2.start();
  26.                 int num = 0;
  27.                 while(true)
  28.                 {
  29.                         if(num++ == 10)
  30.                         {
  31.                                 st.changeFlag();
  32.                                 break;
  33.                         }
  34.                         System.out.println(Thread.currentThread().getName()+"......."+num);
  35.                 }
  36.                 System.out.println("over");
  37.         }
  38. }
复制代码
打印结果是
Thread-1....run
Thread-1....run
main.......6
main.......7
main.......8
main.......9
main.......10
over
Thread-1....run
Thread-0....run
请按任意键继续. . .
不是打印over都结束了吗?为什么每次运行最后都有他们两条语句打印?

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 神马都是浮云

查看全部评分

6 个回复

倒序浏览
你的这个结束,并不是线程真正的结束,在main的线程打印over的时候,t1,t2仍在抢占线程,如果正好抢到了,就打印出来了
如果想避免这种情况,你就要用Thread.sleep(1000);
这样应该就没问题了
回复 使用道具 举报
张承富 发表于 2013-6-25 23:57
你的这个结束,并不是线程真正的结束,在main的线程打印over的时候,t1,t2仍在抢占线程,如果正好抢到了, ...

关键是每次都执行啊.不会每次都能抢到的把?
回复 使用道具 举报
还真不是每次
你把10换成20试试
回复 使用道具 举报
没加锁的原因吧。
回复 使用道具 举报
主线程over    别的没over啊     又不是后台线程会随着主线程结束而结束

评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 最好能给解答下守护线程就好了.

查看全部评分

回复 使用道具 举报
楼主您好。我已将您的帖子改成已解决。如果帖子发布长时间没加分。及时联系我。以免漏分的情况发生
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马