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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ring8677 中级黑马   /  2015-5-20 20:22  /  795 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看一下这段代码,为什么每次运行时都是0线程在走而其他线程都不走呢?
  1. class ThreadDemo4
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Ticket t = new Ticket();
  6.                 Thread t1 = new Thread(t);
  7.                 Thread t2 = new Thread(t);
  8.                 Thread t3 = new Thread(t);
  9.                 Thread t4 = new Thread(t);
  10.                 t1.start();
  11.                 t2.start();
  12.                 t3.start();
  13.                 t4.start();

  14.         }
  15. }
  16. class Ticket implements Runnable
  17. {
  18.         private int num = 1000;
  19.         Object obj = new Object();
  20.         public void run()
  21.         {
  22.                 show();
  23.         }
  24.         public void show()
  25.         {
  26.                 while (true)
  27.                 {
  28.                         synchronized(obj)
  29.                         {
  30.                         if (num>0)
  31.                         {
  32.                                 try
  33.                                 {
  34.                                         Thread.sleep(20);
  35.                                 }
  36.                                 catch (InterruptedException e)
  37.                                 {
  38.                                         e.printStackTrace();
  39.                                 }
  40.                                 System.out.println("线程名字:"+Thread.currentThread().getName()+"--num:"+ num--);

  41.                         }
  42.                         }
  43.                 }
  44.         }
  45. }
复制代码

4 个回复

倒序浏览
我运行了下代码,所有的线程都在跑啊。
哥们你是不是运行错class文件了
回复 使用道具 举报
路过看看
回复 使用道具 举报
马也keyboard 发表于 2015-5-28 10:49
我运行了下代码,所有的线程都在跑啊。
哥们你是不是运行错class文件了

没有,后来我也运行了,也是所有线程都在跑,原因可能就是偶然性导致的。
回复 使用道具 举报
偶然性吧,睡眠时间长点试试看?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马