import java.util.*;
//号码管理器类
public class NumberManager {
//定义一个集合存放顾客
private List<Integer> consumers = new ArrayList<Integer>();
private Integer i = 0;
//窗口向号码管理器取号的方法
public synchronized Integer giveNumber()
{
if(consumers.size()>0)
{
int removed = consumers.remove(0);
return removed;
}
else{
return null;
}
}
}
//取号机类 单例模式
package com.zcz.bank;
public class NumberMachine {
private NumberManager commonNumberManager = new NumberManager();
private NumberManager quickNumberManager = new NumberManager();
private NumberManager VIPNumberManager = new NumberManager();
private NumberMachine(){
}
private static NumberMachine instance = new NumberMachine();
public static NumberMachine getInstance(){
return instance;
}
public NumberManager getCommonNumberManager()
{
return commonNumberManager;
}
public NumberManager getQuickNumberManager()
{
return quickNumberManager;
}
public NumberManager getVIPNumberManager()
{
return VIPNumberManager;
}
}
public class Constants {
public static final int GENERATE_CONSUMER_MIN_TIME = 1000;
public static final int GENERATE_CONSUMER_MAX_TIME = 2000;
public static final int DEAL_TASK_MIN_TIME = 1000;
public static final int DEAL_TASK_MAX_TIME = 5000;
}
//客户类型枚举类
package com.zcz.bank;
public enum ConsumersType {
COMMON,QUICK,VIP;
}
//main方法类
package com.zcz.bank;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class MainClass {
/**
* @param args
*/
public static void main(String[] args) {
new ServeWindow(ConsumersType.COMMON,1).fetchNumber();
new ServeWindow(ConsumersType.COMMON,2).fetchNumber();
new ServeWindow(ConsumersType.COMMON,3).fetchNumber();
new ServeWindow(ConsumersType.COMMON,4).fetchNumber();
new ServeWindow(ConsumersType.QUICK,5).fetchNumber();
new ServeWindow(ConsumersType.VIP,6).fetchNumber();