黑马程序员技术交流社区

标题: 一道入学测试题 [打印本页]

作者: 446111220    时间: 2015-1-10 11:07
标题: 一道入学测试题
编写三各类Ticket、SealWindow、TicketSealCenter分别代表票信息、售票窗口、售票中心。售票中心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程。

但是首先前提是有一个Test类   这就让我很头疼  因为这样一共需要4个类   求大神帮下忙给个思路啊

作者: 潘耿威    时间: 2015-1-10 14:09
Test类和你上面三个类不属于同一级别,Test类有专门的处理机制,我记得好像有个testunit之类的玩意,你上面的三个类注意下线程同步和锁定,没什么其他要注意的!
作者: bluebloodant    时间: 2015-1-10 15:06
这是ios吗?什么叫先有一个test类
作者: xiao飞    时间: 2015-1-10 16:35
这道题 我看到别人分享的有啊
作者: 鹰击长空168    时间: 2015-1-10 21:59
老毕视频里不是有类似的售票程序吗
作者: 当我遇上你    时间: 2015-1-11 02:45
我是这么写的,你参考下
  1. public class Test7 {

  2.         public static void main(String[] args) {
  3.                
  4.                 //创建SealWindow对象
  5.                 SealWindow sw=new SealWindow();
  6.                
  7.                 //创建并开启四个线程
  8.                 new Thread(sw,"窗口一").start();
  9.                 new Thread(sw,"窗口二").start();
  10.                 new Thread(sw,"窗口三").start();
  11.                 new Thread(sw,"窗口四").start();
  12.         }
  13. }

  14. //模拟售票中心功能属性
  15. class TicketSealCenter
  16. {
  17.        
  18.         //售票中心唯一,单例设计
  19.         private  static TicketSealCenter instance=new TicketSealCenter();
  20.         TicketSealCenter(){}
  21.         public static TicketSealCenter getInstance()
  22.         {
  23.                 return instance;
  24.         }

  25.         //售票中心具有统一发票功能
  26.         private Ticket ticket=new Ticket();
  27.         public int getTickets()
  28.         {
  29.                 return ticket.generateTickets();       
  30.         }
  31. }


  32. //模拟售票窗口,由于是几个窗口同时买票,多线程对象应该是窗口
  33. class SealWindow implements Runnable
  34. {
  35.    //获取售票中心发放的火车票
  36.    private int tickets=TicketSealCenter.getInstance().getTickets();
  37.   
  38.    //定义任意一个对象,并做同步代码块的锁
  39.    Object lock=new Object();
  40.    public void run()  
  41.    {  
  42.            while(true)
  43.            {
  44.                   //定义同步代码块
  45.                    synchronized(lock)
  46.                   {
  47.                          
  48.                            //经过的线程休眠10s
  49.                            try
  50.                           {
  51.                                   Thread.sleep(10);
  52.                       }
  53.                           catch (Exception e)
  54.                           {
  55.                                 e.printStackTrace();
  56.                           }
  57.                          

  58.                            //输出售票信息
  59.                           if(tickets>0)
  60.                           {
  61.                                           System.out.println(Thread.currentThread().getName()+"正在发售第"+tickets--+"张票");  
  62.                           }
  63.                           else
  64.                           {
  65.                                   break;
  66.                           }
  67.                   }
  68.            }
  69.    }  
  70. }

  71. //模拟火车票应有属性及方法
  72. class Ticket
  73. {
  74.         //车票的属性有车厢号和座位号,num1代表车厢号,num2代表座位号
  75.         int num1=1;
  76.         int num2=100;
  77.         public String getMessage()
  78.         {
  79.                 return "车厢号:"+num1+"座位号:"+num2;
  80.         }
  81.         public int generateTickets()
  82.         {
  83.                 return num2;
  84.         }
  85.        
  86. }
复制代码

作者: 史磊    时间: 2015-1-11 19:41
好像见过,定义几个类啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2