黑马程序员_张孝祥银行调度系统

银行业务调度系统

---------------------- android培训java培训、期待与您交流! ----------------------

 

模拟实现银行业务调度系统逻辑。

 

具体的需求分析与设计

需求分析:

银行内有6个业务窗口,1-4好窗口为普通窗口,5号为快速窗口,6号位VIP窗口。

有三种对于类型的客户:VIP客户,普通客户,快速客户(如:交电费,水费,电话费等方面的客户)。

异步随机生成各种类型的客户,生成各类型用户的概率比例为:

VIP客户:普通客户:快速客户=163

客户办理业务所需时间有最大和最小。在该范围,随机设定每个VIP客户以及普通客户办理业务所需的时间,快速客户办理业务所需时间为最小值(提示:办理业务的过程可通过线程Sleep的方式模拟)

各类型客户在其对应窗口按顺序依次办理业务。

VIP6号)窗口和快速业务(3号)窗口没有客户等待办理业务的时候,这两个窗口可以处理普通客户的业务,而一旦有对应客户等待办理业务的时候,则优先处理对应客户的业务。

随机生成客户时间间隔以及业务办理时间最大值和最小值自定,可以设置。

不要求实现GUI,值考虑系统逻辑实现,可通过LOG方式展现程序运行结果。

 

设计:

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

我们经常去银行就有这样的认识,首先:我们走进银行就要在取号机选择哪种类型取号排队办理业务,如果我们只是存点小钱或取钱,那就选择普通客户类型,如果我们要交话费,电费,水费等就选择快速客户类型。如果我们要存大数据的钱或成为VIP客户就要选择VIP客户类型。在此:而且这三种类型的客户就是独立的,互不相干,选择哪种类型取号机就会产生哪种类型客户。所以,客户是由取号机生成的。系统一共要产生三个号码管理器对象,各自管理一类用户的排队号码,这三个号码管理对象统一由一个号码管理器进行管理,这个号码机器在整个系统中始终只能有一个,所以,它要被设计成单例。

 

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

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

 

这里要产生三种类:号码管理器类,取号机类,窗口服务类。

 

三种类之间的关系(类图):

 

编码:

 

NumberManager

 

package csdn.heima.study..bank;

 

import java.util.ArrayList;

import java.util.List;

 

/*

 *声明一个号码管理类

 * 定义一个用于存储上一个客户号码的成员变量和用于存储所有等待服务的客户号码的队列集合。

 * 定义一个产生新号码的方法和获取马上要为之服务的号码的方法,这两个方法被不同的线程操作了相同的数据,所以,要进行同步。

 *

 */

public class NumberManager {

       private int lastNumber=1;

       private List<Integer> queueNumber= new ArrayList<Integer>();

      

       public synchronized Integer generateNewNumber()

       {

              //把上一次个号码保存到队列中

              queueNumber.add(lastNumber);

              return lastNumber++;

       }

      

       public synchronized Integer fetchServiceNumber()

       {

              //从队列中找出第0个号码

              Integer number=null;

              if(queueNumber.size()>0)

                     number=queueNumber.remove(0);

              return number;

       }

 

}

 

 

NumberMachine

packagecsdn.heima.study..bank;

/*

 * 声明一个取号机类

 * 通过号码管理器来生成三种类型的实例对象:普通客户管理器,快速客户管理器,VIP客户管理器

 * 定义三个方法来获得三种类型的客户对象

 * 把取号机类通过私有的构造方法形成単例类

 * 产生一个単例对象

 * 通过静态方法来获取単例的对象

 */

publicclass NumberMachine {

   

private NumberManager commonManager=new NumberManager();

private NumberManager expressManager=new NumberManager();

privateNumberManagervipManager=new NumberManager();

 

public NumberManager getCommonManager() {

    returncommonManager;

}

public NumberManager getExpressManager() {

    returnexpressManager;

}

public NumberManager getVipManager() {

    returnvipManager;

}

//设置成単例

private NumberMachine(){}

 

privatestatic NumberMachine instance=new NumberMachine();

//访问単例的实例对象

publicstatic NumberMachine getInstance()

{

    returninstance;

}

 

 

}

 

 

 

ServiceWindow

 

packagecsdn.heima.study..bank;

 

import java.util.Random;

import java.util.concurrent.Executors;

 

/*

 * 定义一个服务窗口类

 * 定义一个叫号的方法,有服务窗口内部来完成的,不需要其他类来调用,所以由线程来完成叫号的功能。

 * 在线程内直接叫三种不同服务

 * 三种不同客户服务叫正在等待的号码,也就是获取一存储的号码

 * 根据最大值和最小值来得到随机获得服务时间

 * 最后得到的就是为这个客户所要花费的时间

 */

publicclass ServiceWindow {

private CustomerType type=CustomerType.COMMON;

privateintwindowId=1;

   

publicvoid setType(CustomerType type) {

    this.type = type;

}

publicvoid setWindowId(int windowId) {

    this.windowId = windowId;

}

    publicvoid start()

    {

       //利用JAVA1.5的新特性吧任务交给线程池,线程池执行线程池中任意的任务。

       Executors.newSingleThreadExecutor().execute(new Runnable(){

           publicvoid run()

           {

              while(true)

              {

                  switch(type)

                  {

                  caseCOMMON:

                     commonService();

                     break;

                  caseEXPRESS:

                     expressService();

                     break;

                  caseVIP:

                     vipService();

                     break;

                  }

                 

              }

           }

           });

           }

 

           privatevoid commonService() {

              String windowName=""+windowId+""+type+"窗口";

              //得到正在等待的客户号码

              Integer number=NumberMachine.getInstance().getCommonManager().fetchServiceNumber();

              System.out.println(windowName+"正在获取任务");

              if(number!=null)

              {

                  System.out.println(windowName+"为第"+number+""+"普通"+"客户服务");

                  long beginTime=System.currentTimeMillis();

                  int maxRand=Constants.MAX_SERVICE_TIME-Constants.MIN_SERVICE_TIME;

                  //得到为客户所要用到的时间

                  long serveTime=new Random().nextInt(maxRand)+1+Constants.MIN_SERVICE_TIME;

                  try {

                     Thread.sleep(serveTime);

                  } catch (InterruptedException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

                  }

                  long costTime=System.currentTimeMillis()-beginTime;

                  System.out.println(windowName+"为第"+number+""+"普通"+"客户完成服务,耗时"+costTime/1000+"");

              }else

              {

                  System.out.println(windowName+"没有取到服务任务,先休息1秒钟嘛!");

                  try {

                     Thread.sleep(1000);

                  } catch (InterruptedException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

                  }

              }

          

           }

          

           privatevoid expressService() {

              String windowName=""+windowId+""+type+"窗口";

          

              Integer number=NumberMachine.getInstance().getExpressManager().fetchServiceNumber();

              System.out.println(windowName+"正在获取任务");

              if(number!=null)

              {

                  System.out.println(windowName+"为第"+number+""+type+"客户服务");

                  long beginTime=System.currentTimeMillis();

                  //int maxServeTime=Constants.MAX_SERVICE_TIME-Constants.MIN_SERVICE_TIME;

              //  long serveTime=new Random().nextInt(+1+Constants.MIN_SERVICE_TIME);

                  try {

                     Thread.sleep(Constants.MIN_SERVICE_TIME);

                  } catch (InterruptedException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

                  }

                  long costTime=System.currentTimeMillis()-beginTime;

                  System.out.println(windowName+"为第"+number+""+type+"客户完成服务,耗时"+costTime/1000+"");

              }else

              {

                  System.out.println(windowName+"没有取到服务任务.");

                  commonService();

              }

          

           }

           privatevoid vipService() {

              String windowName=""+windowId+""+type+"窗口";

          

              Integer number=NumberMachine.getInstance().getCommonManager().fetchServiceNumber();

              System.out.println(windowName+"正在获取任务");

              if(number!=null)

              {

                  System.out.println(windowName+"为第"+number+""+type+"客户服务");

                  long beginTime=System.currentTimeMillis();

                  int maxRand=Constants.MAX_SERVICE_TIME-Constants.MIN_SERVICE_TIME;

                  long serveTime=new Random().nextInt(maxRand)+1+Constants.MIN_SERVICE_TIME;

                  try {

                     Thread.sleep(serveTime);

                  } catch (InterruptedException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

                  }

                  long costTime=System.currentTimeMillis()-beginTime;

                  System.out.println(windowName+"为第"+number+""+type+"客户完成服务,耗时"+costTime/1000+"");

              }else

              {

                  System.out.println(windowName+"没有取到服务任务!");

                  commonService();

              }

          

           }

    }

 

 

 

 

 

CustomerType

packagecsdn.heima.study..bank;

/*

 * 声明一个客户类型的枚举类

 * 定义三种客户的类型

 * 覆盖父类的toString方法,三种客户类型以中文的形式出现

 */

publicenum CustomerType {

    COMMON,EXPRESS,VIP;

   

    public String toString()

    {

       switch(this)

       {

       caseCOMMON:

           return"普通";

       caseEXPRESS:

           return"快速";

       caseVIP:

           return name();

       }

       returnnull;

    }

}

 

 

 

 

Constants

packagecsdn.heima.study..bank;

/*

 * 定义三个静态常量

 * 分别表示最大服务时间,最小服务时间,普通客户间隔时间

 */

publicclass Constants {

 

    publicstaticintMAX_SERVICE_TIME=10000;

    publicstaticintMIN_SERVICE_TIME=1000;

    publicstaticintCOMMON_CUSTOMER_INTERVAL_TIME=1;

}

 

 

 

MainClass

packagecsdn.heima.study..bank;

import java.util.concurrent.Executors;

import java.util.concurrent.TimeUnit;

/*

 * 声明主类,并能独立运行

 * 创建三种类型的服务窗口对象

 * 利用线程池执行在一定的时间间隔内处理客户业务

 */

publicclass MainClass {

 

    /**

     *@paramargs

     */

    publicstaticvoid main(String[] args) {

       // TODO Auto-generated method stub

 

       for(int i=1;i<5;i++){

           ServiceWindow commonWindow=new ServiceWindow();

           commonWindow.setWindowId(i);

           commonWindow.start();

       }

      

       ServiceWindow expressWindow=new ServiceWindow ();

       expressWindow.setType(CustomerType.EXPRESS);

       expressWindow.start();

      

       ServiceWindow wipWindow=new ServiceWindow ();

       wipWindow.setType(CustomerType.VIP);

       wipWindow.start();

      

      

       Executors.newScheduledThreadPool(1).scheduleAtFixedRate(

              new Runnable()

              {

                  publicvoid run()

                  {

                     Integer number=NumberMachine.getInstance().getCommonManager().generateNewNumber();

                     System.out.println(number+"号普通客户等待服务!");

                  }

              },

              0,

              Constants.COMMON_CUSTOMER_INTERVAL_TIME,

              TimeUnit.SECONDS);

      

       Executors.newScheduledThreadPool(1).scheduleAtFixedRate(

              new Runnable()

              {

                  publicvoid run()

                  {

                     Integer number=NumberMachine.getInstance().getExpressManager().generateNewNumber();

                     System.out.println(number+"号快速客户等待服务!");

                  }

              },

              0,

              Constants.COMMON_CUSTOMER_INTERVAL_TIME * 2,

              TimeUnit.SECONDS);

      

       Executors.newScheduledThreadPool(1).scheduleAtFixedRate(

              new Runnable()

              {

                  publicvoid run()

                  {

                     Integer number=NumberMachine.getInstance().getVipManager().generateNewNumber();

                     System.out.println(number+"VIP客户等待服务!");

                  }

              },

              0,

              Constants.COMMON_CUSTOMER_INTERVAL_TIME * 6,

              TimeUnit.SECONDS);

    }

 

}

 

测试:

第一次测试结果

正在获取任务

正在获取任务

Exception in thread "pool-3-thread-1" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

    at java.util.ArrayList.RangeCheck(Unknown Source)

    at java.util.ArrayList.remove(Unknown Source)

    at cn.itcast.study.bank.NumberManager.fetchServiceNumber(NumberManager.java:28)

    at cn.itcast.study.bank.ServiceWindow.commonService(ServiceWindow.java:49)

    at cn.itcast.study.bank.ServiceWindow.access$1(ServiceWindow.java:46)

    at cn.itcast.study.bank.ServiceWindow$1.run(ServiceWindow.java:31)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)正在获取任务

正在获取任务

正在获取任务

正在获取任务

 

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

    at java.lang.Thread.run(Unknown Source)

Exception in thread "pool-4-thread-1" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

    at java.util.ArrayList.RangeCheck(Unknown Source)

    at java.util.ArrayList.remove(Unknown Source)

    at cn.itcast.study.bank.NumberManager.fetchServiceNumber(NumberManager.java:28)

    at cn.itcast.study.bank.ServiceWindow.commonService(ServiceWindow.java:49)

    at cn.itcast.study.bank.ServiceWindow.access$1(ServiceWindow.java:46)1号普通客户等待服务!

1号快速客户等待服务!

 

    at cn.itcast.study.bank.ServiceWindow$1.run(ServiceWindow.java:31)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

    at java.lang.Thread.run(Unknown Source)

Exception in thread "pool-1-thread-1" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

    at java.util.ArrayList.RangeCheck(Unknown Source)

    at java.util.ArrayList.remove(Unknown Source)

    at cn.itcast.study.bank.NumberManager.fetchServiceNumber(NumberManager.java:28)1VIP客户等待服务!

 

    at cn.itcast.study.bank.ServiceWindow.commonService(ServiceWindow.java:49)

    at cn.itcast.study.bank.ServiceWindow.access$1(ServiceWindow.java:46)

    at cn.itcast.study.bank.ServiceWindow$1.run(ServiceWindow.java:31)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

    at java.lang.Thread.run(Unknown Source)

Exception in thread "pool-2-thread-1" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

    at java.util.ArrayList.RangeCheck(Unknown Source)

    at java.util.ArrayList.remove(Unknown Source)

    at cn.itcast.study.bank.NumberManager.fetchServiceNumber(NumberManager.java:28)

    at cn.itcast.study.bank.ServiceWindow.commonService(ServiceWindow.java:49)

    at cn.itcast.study.bank.ServiceWindow.access$1(ServiceWindow.java:46)

    at cn.itcast.study.bank.ServiceWindow$1.run(ServiceWindow.java:31)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

    at java.lang.Thread.run(Unknown Source)

Exception in thread "pool-5-thread-1" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

    at java.util.ArrayList.RangeCheck(Unknown Source)

    at java.util.ArrayList.remove(Unknown Source)

    at cn.itcast.study.bank.NumberManager.fetchServiceNumber(NumberManager.java:28)

    at cn.itcast.study.bank.ServiceWindow.expressService(ServiceWindow.java:79)

    at cn.itcast.study.bank.ServiceWindow.access$2(ServiceWindow.java:76)

    at cn.itcast.study.bank.ServiceWindow$1.run(ServiceWindow.java:34)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

    at java.lang.Thread.run(Unknown Source)

Exception in thread "pool-6-thread-1" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

    at java.util.ArrayList.RangeCheck(Unknown Source)

    at java.util.ArrayList.remove(Unknown Source)

    at cn.itcast.study.bank.NumberManager.fetchServiceNumber(NumberManager.java:28)

    at cn.itcast.study.bank.ServiceWindow.vipService(ServiceWindow.java:103)

    at cn.itcast.study.bank.ServiceWindow.access$3(ServiceWindow.java:100)

    at cn.itcast.study.bank.ServiceWindow$1.run(ServiceWindow.java:37)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

    at java.lang.Thread.run(Unknown Source)

2号快速客户等待服务!

2号普通客户等待服务!

2VIP客户等待服务!

3号快速客户等待服务!

3号普通客户等待服务!

3VIP客户等待服务!

4号快速客户等待服务!

4号普通客户等待服务!

4VIP客户等待服务!

5号快速客户等待服务!

5号普通客户等待服务!

5VIP客户等待服务!

 

 

第二次测试结果

1号普通窗口正在获取任务

2号普通窗口正在获取任务

4号普通窗口正在获取任务

3号普通窗口正在获取任务

1号快速窗口正在获取任务

1号快速窗口没有取到服务任务.

1号快速窗口正在获取任务

1号快速窗口没有取到服务任务,先休息1秒钟嘛!

3号普通窗口没有取到服务任务,先休息1秒钟嘛!

4号普通窗口没有取到服务任务,先休息1秒钟嘛!

2号普通窗口没有取到服务任务,先休息1秒钟嘛!

1号普通窗口没有取到服务任务,先休息1秒钟嘛!

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务!

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务,先休息1秒钟嘛!

1号普通客户等待服务!

1号快速客户等待服务!

1VIP客户等待服务!

3号普通窗口正在获取任务

2号普通窗口正在获取任务

2号普通窗口没有取到服务任务,先休息1秒钟嘛!

4号普通窗口正在获取任务

4号普通窗口没有取到服务任务,先休息1秒钟嘛!

1号普通窗口正在获取任务

1号普通窗口没有取到服务任务,先休息1秒钟嘛!

1号快速窗口正在获取任务

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务!

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务,先休息1秒钟嘛!

2号普通客户等待服务!

2号快速客户等待服务!

2VIP客户等待服务!

3号普通窗口为第1个普通客户完成服务,耗时

3号普通窗口正在获取任务

3号普通窗口为第2个普通客户完成服务,耗时

3号普通窗口正在获取任务

3号普通窗口没有取到服务任务,先休息1秒钟嘛!

2号普通窗口正在获取任务

2号普通窗口没有取到服务任务,先休息1秒钟嘛!

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务!

 

 

 

第三次测试结果

1号普通窗口正在获取任务

3号普通窗口正在获取任务

1号快速窗口正在获取任务

1号快速窗口没有取到服务任务.

3号普通窗口没有取到服务任务,先休息1秒钟嘛!

1号快速窗口正在获取任务

1号快速窗口没有取到服务任务,先休息1秒钟嘛!

1号普通窗口没有取到服务任务,先休息1秒钟嘛!

2号普通窗口正在获取任务

2号普通窗口没有取到服务任务,先休息1秒钟嘛!

4号普通窗口正在获取任务

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务!

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务,先休息1秒钟嘛!

4号普通窗口没有取到服务任务,先休息1秒钟嘛!

1号普通客户等待服务!

1号快速客户等待服务!

1VIP客户等待服务!

1号快速窗口正在获取任务

1号快速窗口为第1个快速客户服务

2号普通窗口正在获取任务

2号普通窗口为第1个普通客户服务

1号普通窗口正在获取任务

3号普通窗口正在获取任务

4号普通窗口正在获取任务

4号普通窗口没有取到服务任务,先休息1秒钟嘛!

1VIP窗口正在获取任务

1号普通窗口没有取到服务任务,先休息1秒钟嘛!

3号普通窗口没有取到服务任务,先休息1秒钟嘛!

1VIP窗口没有取到服务任务!

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务,先休息1秒钟嘛!

2号普通客户等待服务!

2号快速客户等待服务!

2VIP客户等待服务!

2号普通窗口为第1个普通客户完成服务,耗时

2号普通窗口正在获取任务

2号普通窗口为第2个普通客户服务

1号快速窗口为第1个快速客户完成服务,耗时

1号快速窗口正在获取任务

1号快速窗口为第2个快速客户服务

1号普通窗口正在获取任务

1号普通窗口没有取到服务任务,先休息1秒钟嘛!

3号普通窗口正在获取任务

3号普通窗口没有取到服务任务,先休息1秒钟嘛!

 

 

第四次测试结果

1VIP窗口正在获取任务

1号快速窗口正在获取任务

3号普通窗口正在获取任务

1号快速窗口没有取到服务任务.

1号快速窗口正在获取任务

1号快速窗口没有取到服务任务,先休息1秒钟嘛!

3号普通窗口没有取到服务任务,先休息1秒钟嘛!

2号普通窗口正在获取任务

2号普通窗口没有取到服务任务,先休息1秒钟嘛!

4号普通窗口正在获取任务

4号普通窗口没有取到服务任务,先休息1秒钟嘛!

1号普通窗口正在获取任务

1VIP窗口没有取到服务任务!

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务,先休息1秒钟嘛!

1号普通窗口没有取到服务任务,先休息1秒钟嘛!

1号普通客户等待服务!

1号快速客户等待服务!

1VIP客户等待服务!

1号快速窗口正在获取任务

1号快速窗口为第1个快速客户服务

2号普通窗口正在获取任务

2号普通窗口为第1个普通客户服务

4号普通窗口正在获取任务

4号普通窗口没有取到服务任务,先休息1秒钟嘛!

3号普通窗口正在获取任务

3号普通窗口没有取到服务任务,先休息1秒钟嘛!

1VIP窗口正在获取任务

1号普通窗口正在获取任务

1VIP窗口没有取到服务任务!

1号普通窗口没有取到服务任务,先休息1秒钟嘛!

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务,先休息1秒钟嘛!

2号普通客户等待服务!

1号快速窗口为第1个快速客户完成服务,耗时1

1号快速窗口正在获取任务

1号快速窗口没有取到服务任务.

1号快速窗口正在获取任务

1号快速窗口为第2个普通客户服务

4号普通窗口正在获取任务

4号普通窗口没有取到服务任务,先休息1秒钟嘛!

1号普通窗口正在获取任务

1VIP窗口正在获取任务

3号普通窗口正在获取任务

3号普通窗口没有取到服务任务,先休息1秒钟嘛!

1VIP窗口没有取到服务任务!

1号普通窗口没有取到服务任务,先休息1秒钟嘛!

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务,先休息1秒钟嘛!

3号普通客户等待服务!

2号快速客户等待服务!

4号普通窗口正在获取任务

4号普通窗口为第3个普通客户服务

1VIP窗口正在获取任务

1号普通窗口正在获取任务

1号普通窗口没有取到服务任务,先休息1秒钟嘛!

3号普通窗口正在获取任务

3号普通窗口没有取到服务任务,先休息1秒钟嘛!

1VIP窗口没有取到服务任务!

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务,先休息1秒钟嘛!

4号普通客户等待服务!

3号普通窗口正在获取任务

3号普通窗口为第4个普通客户服务

1号普通窗口正在获取任务

1号普通窗口没有取到服务任务,先休息1秒钟嘛!

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务!

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务,先休息1秒钟嘛!

5号普通客户等待服务!

3号快速客户等待服务!

1号普通窗口正在获取任务

1号普通窗口为第5个普通客户服务

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务!

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务,先休息1秒钟嘛!

6号普通客户等待服务!

3号普通窗口为第4个普通客户完成服务,耗时1

3号普通窗口正在获取任务

3号普通窗口为第6个普通客户服务

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务!

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务,先休息1秒钟嘛!

7号普通客户等待服务!

4号快速客户等待服务!

2VIP客户等待服务!

2号普通窗口为第1个普通客户完成服务,耗时5

2号普通窗口正在获取任务

2号普通窗口为第7个普通客户服务

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务!

1VIP窗口正在获取任务

1VIP窗口没有取到服务任务,先休息1秒钟嘛!

8号普通客户等待服务!

1VIP窗口正在获取任务

1VIP窗口为第8VIP客户服务

9号普通客户等待服务!

5号快速客户等待服务!

10号普通客户等待服务!

11号普通客户等待服务!

6号快速客户等待服务!

1号普通窗口为第5个普通客户完成服务,耗时5

1号普通窗口正在获取任务

1号普通窗口为第9个普通客户服务

3号普通窗口为第6个普通客户完成服务,耗时4

3号普通窗口正在获取任务

3号普通窗口为第10个普通客户服务

1号快速窗口为第2个普通客户完成服务,耗时8

1号快速窗口正在获取任务

1号快速窗口为第2个快速客户服务

 

 

维护:

 

OK!

 

 

 

 

 

---------------------- android培训java培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net/heima
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值