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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周博文 中级黑马   /  2015-8-18 22:34  /  889 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2. * Ticket: 属性:编号(代表第几张票)  行为:打印票据信息(重写toString方法)
  3. */
  4. public class Ticket {
  5.         private int num;

  6.         public Ticket(int num) {
  7.                 this.num = num;
  8.         }
  9.        
  10.         @Override
  11.         public String toString() {
  12.                 return "黑马大电影:" + num + "号票";
  13.         }

  14. }
复制代码
  1. public class SealWindow implements Runnable {
  2.        
  3.         private TicketSealCenter tickets;

  4.         public SealWindow(TicketSealCenter tickets) {
  5.                 this.tickets = tickets;
  6.         }

  7.         @Override
  8.         public void run() {
  9.                 while(tickets.hasTicket()) {
  10.                         synchronized(tickets) {
  11.                                 if(!tickets.hasTicket()) {
  12.                                         break;
  13.                                 }
  14.                                 Ticket t = tickets.sellTicket();
  15.                                 System.out.println(Thread.currentThread().getName() + "卖出了 : " + t);
  16.                         }
  17.                 }
  18.         }

  19. }
复制代码
  1. import java.util.LinkedList;

  2. /*
  3. * TicketSealCenter:
  4. * 售票中心应该持有所有的票对象,定义一个集合用来存储票对象,由于票不能重复,因此使用Set集合
  5. * 属性:Set<Ticket>集合用于存储所有票的信息
  6. *            int  number  定义初始的票的数量
  7. * 在构造方法中对集合进行初始化,即对票进行编号,票的数量从外界获取
  8. */
  9. public class TicketSealCenter {
  10.         private LinkedList<Ticket> tickets = new LinkedList<>();
  11.        
  12.         public TicketSealCenter(int num) {
  13.                 for (int i = 1; i <= num ; i++) {
  14.                         tickets.add(new Ticket(i));
  15.                 }
  16.         }
  17.        
  18.         public Ticket sellTicket() {
  19.                 return tickets.remove();
  20.         }
  21.        
  22.         public boolean hasTicket() {
  23.                 return !tickets.isEmpty();
  24.         }
  25. }
复制代码

6 个回复

倒序浏览
学习了。。。。
回复 使用道具 举报
回复 使用道具 举报
顶一下,杠杠的
回复 使用道具 举报
风华正茂 来自手机 中级黑马 2015-8-19 12:25:15
报纸
谢谢楼主分享,楼主辛苦了
回复 使用道具 举报
真是用心了
回复 使用道具 举报
把Set集合放进来也是可以的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马