首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

黑马软件工程师 银行业务调度系统

2013-03-22 
黑马程序员 银行业务调度系统----------android培训、java培训、java学习型技术博客、期待与您交流! --------

黑马程序员 银行业务调度系统

----------android培训、java培训、java学习型技术博客、期待与您交流! ----------

有三种对应类型的客户:VIP客户,普通客户,快速客户,异步随机生成各种类型的客户,各类型客户在其对应窗口按顺序依次办理业务

每一个客户其实就是由银行的一个取号机器产生号码的方式来表示的。所以,要有一个号码管理器对象,让这个对象不断地产生号码,就等于随机生成了客户。

由于有三类客户,每类客户的号码编排都是完全独立的,本系统一共要产生三个号码管理器对象,各自管理一类用户的排队号码。这三个号码管理器对象统一由一个号码机器进行管理,这个号码机器在整个系统中始终只能有一个,所以,它要被设计成单例。

各类型客户在其对应窗口按顺序依次办理业务,准确地说,应该是窗口依次叫号。

各个窗口怎么知道该叫哪一个号了呢?它一定是问的相应的号码管理器,即服务窗口每次找号码管理器获取当前要被服务的号码。

/** * 这里的任务: * 创建六个窗口 4个普通窗口、1个快速窗口、1个vip窗口 * 随机产生客户来生成业务号 比率为 6 :3 :1 * * @author joyce * */import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;public class Main {public static void main(String[] args) {// 产生四个普通窗口for(int i=1; i<=4; i++){ServiceWindow commonWindow = new ServiceWindow();commonWindow.setNumber(i);commonWindow.setType(CustomerType.COMMON);commonWindow.start();}// 产生一个快速窗口ServiceWindow expressWindow = new ServiceWindow();expressWindow.setNumber(1);expressWindow.setType(CustomerType.EXPRESS);expressWindow.start();// 产生一个vip窗口ServiceWindow vipWindow = new ServiceWindow();vipWindow.setNumber(1);vipWindow.setType(CustomerType.VIP);vipWindow.start();// 普通客户拿号Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() {public void run() {Integer serviceNumber = NumberMachine.getInstance().getCommonManager().generateNewNumber();System.out.println("第 "+serviceNumber+" 号客户正在等待服务!");}}, 0, Constants.COMMON_CUSTOMER_INTERVAL_TIME, TimeUnit.SECONDS);// 快速客户拿号Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() {public void run() {Integer serviceNumber = NumberMachine.getInstance().getExpressManager().generateNewNumber();System.out.println("第 "+serviceNumber+" 号客户正在等待服务!");}}, 0,Constants.COMMON_CUSTOMER_INTERVAL_TIME * 2, TimeUnit.SECONDS);// vip客户拿号Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() {public void run() {Integer serviceNumber = NumberMachine.getInstance().getVipManager().generateNewNumber();System.out.println("第 "+serviceNumber+" 号客户正在等待服务!");}}, 0,Constants.COMMON_CUSTOMER_INTERVAL_TIME * 6, TimeUnit.SECONDS);}}






热点排行