黑马程序员————银行业务调度3

来源:互联网 发布:网络机顶盒如何更新 编辑:程序博客网 时间:2024/05/22 17:42
MainClass类
  1.用for循环创建出4个普通窗口,再创建出1个快速窗口和一个VIP窗口。
  2.接着再创建三个定时器,分别定时去创建新的普通客户号码、新的快速客户号码、新的VIP客户号码。

源码如下:

package cn.itcast.bankqueue;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;import java.util.logging.Logger;public class MainClass {private static Logger logger = Logger.getLogger("cn.itcast.bankqueue");public static void main(String[] args) {//产生4个普通窗口for(int i=1;i<5;i++){ServiceWindow window =  new ServiceWindow();window.setNumber(i);window.start();}//产生1个快速窗口ServiceWindow expressWindow =  new ServiceWindow();expressWindow.setType(CustomerType.EXPRESS);expressWindow.start();//产生1个VIP窗口ServiceWindow vipWindow =  new ServiceWindow();vipWindow.setType(CustomerType.VIP);vipWindow.start();//普通客户拿号Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable(){public void run(){Integer serviceNumber = NumberMachine.getInstance().getCommonManager().generateNewNumber();/** * 采用logger方式,无法看到直观的运行效果,因为logger.log方法内部并不是直接把内容打印出出来, * 而是交给内部的一个线程去处理,所以,打印出来的结果在时间顺序上看起来很混乱。 *///logger.info("第" + serviceNumber + "号普通客户正在等待服务!");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 + "号VIP客户正在等待服务!");}},0,Constants.COMMON_CUSTOMER_INTERVAL_TIME * 6, TimeUnit.SECONDS);}}

Constants类
  > 定义三个常量:MAX_SERVICE_TIME、MIN_SERVICE_TIME、COMMON_CUSTOMER_INTERVAL_TIME

0 0
原创粉丝点击