---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
1. 银行调度系统业务需求说明
(1)银行有六个业务窗口,1-4为普通窗口,5号为快速窗口,6号为VIP窗口,可对应三种类型的客户,
即:VIP客户,快速客户,普通客户。
(2)每个客户业务的处理时间自行设定,并有最大值和最小值。
普通窗口只能为普通客户服务;
快速窗口优先服务快速客户其次可服务于普通客户;
VIP窗口优先服务于VIP客户,其次服务于普通客户。
2. 类
NumberManager 方法有generateNumber()产生客户号码,fetchNumber()窗口取号
NumberMachine 创建三个对象,普通客户对象,快速客户对象,VIP对象。
方法有getCommonManager(),getVipManager(),getExpressManager(),getInstance()静态方法.
ServiceWindow 方法有start(),commonService(),expressService(),vipService().
3.泛型
泛型表示存储同一类型的多个对象的集合。
List<Integer> queueNumber=new ArrayList<Integer>该列表是先进先出。
queueNumber.add(number); 用来保存产生的新号码,
queueNumber.remove(0); 每次窗口取走号码,列表就删除它.
4. 线程的应用
(1). 利用线程池对象创建了一个线程对象并实现Runnable接口中的run方法。
public void start(){
Executeors.newSingleThreadExecutor().execute(new Runnable(){
public void run(){
//创建普通客户对象;
Thread.sleep(time);
}
});
}
Executeors线程池类,可创建多个线程对象。
(2). 多线程的并发应用:
for(int i=1;i<5;i++){
ServiceWindow commonWindow=new ServiceWindow();
commonWindow.setWindowId(i);
commonWindow.start();
}
ServiceWindow exepressWindow=new ServiceWindow();
expressWindow.setType(CustcomerType.EXPRESS);
expressWindow.start();
ServiceWindow vipWindow=new ServiceWindow();
vipWindow.setType(CustomerType.VIP);
vipWindow.start();
//创建定时器
Executors.newScheduledThreadPool(1).scheduleAtFiredRate(
new Runnerable(){
public void run(){
//得到普通客户号对象
//输出提示信息
}}, //执行一段代码命令
0, //过多长时间来第一个人
1, //以后每隔多长时间来一个人
TimeUnit.SECOMDS //时间单位
);
Executors.newScheduledThreadPool(1).scheduleAtFiredRate(
new Runnerable(){
public void run(){
//得到快速客户号对象
//输出提示信息
}},
0,
6,
TimeUnit.SECOMDS
);
Executors.newScheduledThreadPool(1).scheduleAtFiredRate(
new Runnerable(){
public void run(){
//得到VIP客户号对象
//输出提示信息
}},
0,
3,
TimeUnit.SECOMDS
);
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------