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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

sam3say

中级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© sam3say 中级黑马   /  2014-12-15 11:32  /  1144 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. //定义Ticket1类实现runnable接口
  2. class Ticket1 implements Runnable
  3. {
  4.         private int ticket=10;
  5.         //Object lock=new Object();
  6.         public void run()
  7.         {
  8.                 while(true)
  9.                 {
  10.                         saleTicket();//调用售票方法
  11.                         if(ticket<=0)
  12.                         {
  13.                                 break;
  14.                         }
  15.                 }
  16.         }

  17.         //定义一个同步方法saleTicket
  18.         private synchronized void saleTicket()
  19.         {
  20.                         if(ticket>0)
  21.                         {
  22.                                 try
  23.                                 {
  24.                                         Thread.sleep(10);//经过此线程的时候休眠10毫秒
  25.                                 }
  26.                                 catch (InterruptedException e)
  27.                                 {
  28.                                         e.printStackTrace();
  29.                                 }
  30.                                 System.out.println(Thread.currentThread().getName()+"----卖出的票:"+ticket--);
  31.                         }
  32.         }
  33. }
  34. class  Example12
  35. {
  36.         public static void main(String[] args)
  37.         {
  38.                 Ticket1 t1=new Ticket1();//创建Ticket1对象
  39.                 //创建并开启四个线程
  40.                 new Thread(t1,"线程一").start();
  41.                 new Thread(t1,"线程二").start();
  42.                 new Thread(t1,"线程三").start();
  43.                 new Thread(t1,"线程四").start();
  44.                 //System.out.println("Hello World!");
  45.         }
  46. }
复制代码

控制台只打印了线程一,1到10的结果。
为什么没有打印出来别的线程呢?

11 个回复

倒序浏览
就卖10张票太少了, 你卖1000张 ,你看一个售票员还忙得过来不。。。
回复 使用道具 举报
恩,楼上说的对,你的数据太少了,最少1000在看看,或者加入sleep看看,给别的线程有执行的时间
回复 使用道具 举报
线程1起来以后,加个等待,sleep()在试试
回复 使用道具 举报
不错慢慢的正能量
回复 使用道具 举报
不错慢慢的正能量
回复 使用道具 举报
路过,学习学习
回复 使用道具 举报
你可以吧一线程注释掉,看看是不是有问题,要是没有就是数据太少的原因。
回复 使用道具 举报
票数太少了,其他的线程还没有获得执行权呢
回复 使用道具 举报
票太少了  别的线程没有抢到
回复 使用道具 举报
Bali 中级黑马 2014-12-15 23:41:10
11#
人多票少!
回复 使用道具 举报
谢谢大家的指导啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马