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

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

银行项目需求
1-4普通 5快速 6VIP
异步随机生成6:3:1

业务处理时间最大/最小 快速(最小时间)sleep
快速和VIP空闲,可以处理普通
随机生成客户间隔 log

首先要搞清项目内容
我认为最最最重要的还是项目的面向对象分析与设计

提取类和对象的信息

客户是由取号机器产生 号码管理器对象
三类客户编码独立
机器单例————三个管理器对象 
窗口向管理器要服务号

com.isoftstone.interview.bank;
NumberNewManager{
private int lastNumber = 1;
private List<Integer> queueNumber = new ArrayList<Integer>();//动态数组,集合
public synchronized int generateNewManager(){
queueNumber.add(lastNumber);
return lastNumber++;
}
public synchronized int//Integer#自动拆箱装箱# fetchServiceNumber(){
return queueNumber.remove(0);//可能取不到,可能null异常
}
//两个线程访问了相同的数据就会出错
}
NumberMachine{
//产生三个号码管理器
private NumberManager commonManager = new NumberManager();
expressManager
vipManager
生成三者的get方法
把NumberMachine设计成单例
}


服务窗口
private CustomType type = CustomerType.COMMON;//1\2\3枚举限制,默认值用得最多
private int windowId = 1;//可以作为构造方法的参数
public void start(){
Executors.newSingleThreadExecutor().execute(new Runnable(){public void run(){
while(true)
{
String windowName = "" + windowId + "号" +type+ "窗口";
if/swtich语句判断Type值,生成相应的号码管理器
//生成普通客户服务号
Integer number = NumberMachine.getInstance().getCommonManager().FetchServicNumber();
判断number是否null值;
System.currentTimeMillis();
消耗的时间=当前时间-beginTime
Thread.sleep(severTime);
long serverTime=new Random().nextInt(最大-最小)+1+最小时间;
Constacts(常量)设计成类
public static int MAX_SERVICE_TIME = 10000;
}
}});
}
???if else switch 效率
public enum CustomerType{
COMMON,EXPRESS,VIP;
}


vip和快速 可以作为 Common 的子类
把需要需要的修改的部分抽象成方法
子类覆盖抽象的方法

main class
for(int i=1;i<5;i++)
{ServiceWindow commonWindow = new ServiceWindow();
window.setWindowId();//vipWindow.setType(CustomerType.COMMON)
commonWindow.start(i);}


模拟顾客
Executors.newScheduledThreadPool(1).scheduleAtFixedRate{
new Runnable(){
public void run(){
Integer number = NumberMachine.getInstance().getCommonManager().generateNewManager();
}

},//command
0,//initialDelay
1,//1
TimeUnit.SECONDS//单位,定义常量
}


fetchServiceNumber()
Integer number = null;
if(queueNumber.size()>0)
{number = queueNumber.remove(0);}
return number


注意打印的对象

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

 详细请查看:http://edu.csdn.net/heima

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值