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

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




设计
银行业务种的流程:
用户进入银行--->取号---->等待----->窗口叫号,去对应的窗口处理业务
关联的对象有用户,窗口,取号器
但实际中这种模拟不需要用户有任何行为所以可以用数组替代
取号器则需要3个号码产生器对应3种类型业务的客户,普通,VIP,快速客户
所以实际需要3种类型 取号器,号码产生器,窗口

NumberMachine,NumberManager,servicesWindow


系统

 

NumberManager号码产生器负责产生新号码

 

generateNewNumber()

,和叫号

 

fetchNumber()

两种方法都会在线程里执行,所以需要加锁


银行只有一个取号器----->将NumberMachine设计成单例

NumberMachine包含3个NumberManager分别对应普通、快速、VIP客户


银行有6个窗口--->4个普通 一个VIP 一个快速窗口

定义一个枚举来指定是什么类型窗口

 

Enum CustomerType--->COMMON,EXPRESS,VIP

窗口类型使用set方法来制定,而不是构造方法,这样在之后可以改变窗口类型,而不是静态绑定

定义3个方法

 

 

commonService();

普通窗口,对普通用户叫号,处理业务,随即等待1到10秒,如果未叫到号,则休息一秒。

expressService();

快速窗口,对快速用户叫号,处理业务,处理1秒,如果未叫到号,则对普通用户叫号,如未叫到,则休息一秒。

vipService();

VIP窗口,对VIP用户叫号,处理业务,随即等待1到10秒,如未叫到VIP用户,则对普通用户叫号,如未叫到,则休息一秒

建立一个线程---->每个窗口对象都有单独的线程,不停的根据窗口类型类型(枚举CustomerType+switch())叫号。


接下来只需要一个Main来给按随即时间增加用户

启动6个窗口----> 4个普通,一个快速,一个Vip

建立3个线程调度

 

Executors.newScheduledThreadPool(1).scheduleAtFixedRate()

分别按比例1:6:3成生VIP,普通,快速类型用户,等待窗口处理

系统基本完成









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

  详细请查看: http://edu.csdn.net/heima/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值