java面试题之银行业务调度系统
来源:互联网 发布:淘宝怎么买东西最划算 编辑:程序博客网 时间:2024/05/04 08:22
银行业务调度系统
总结:线程通过NumberMachine的NumberManager对象定时产生对应类型的客户,WindowService类根据窗口的类型通过NumberMachine的NumberManager对象获取号码并进行服务.两者通过产生号码和获取号码联系的.
实现步骤
1,创建一个NumberManager类.用于号码的管理
定义一个号码计数器(int)和一个集合(用于存储号码)
定义一个generateNumber()方法,用于产生号码(即增加计数器的值),并将号码存放在集合中.
定义一个fetchNumber()方法,用于获取号码,从集合中第一个号码并移除(集合的remove()方法),并返回该号码.
注:这两个方法要加同步锁,防止产生号码的方法还没执行完,就取号.(没取着)
2,创建一个NumberMachine类,用于产生号码,因为只有一个对象设计成单例的
定义3个NumberManager对象,分别对应着普通,快速,Vip的取号管理.
将该类设计成单例模式.
3,创建一个CustomerType枚举,用于定义三种的客户
定义三个元素,分别是Common,Express,Vip,并重写toString().
4,创建一个WindowService,用于管理窗口叫号和服务.
定义一个窗口类型对象(Common),和窗口的编号(windoweId);并进行初始化.
在构造函数中启动一个线程并一直运行(while(true)),run()方法中while中的代码是:获取当前窗口的类型:
若是Common,则通过NumberMachine对象的getCommo()方法返回NumberManager对象,获取该对象中的号码(fetchNumbe).并判断是否为空, 若不为空,则进行服务(服务时间用Thread.sleep()实现).服务时间随机,是的话,休息一秒.
若是Express,则通过NumberMachine对象的getExpress()方法返回NumberManager对象,获取该对象中的号码(fetchNumbe).并判断是否为空,若不为空,则进行服务(服务时间用Thread.sleep()实现).服务时间是1秒,若不为空则调用commonService()方法,为普通客户服务.
若是Vip,则通过NumberMachine对象的getVip()方法返回NumberManager对象,获取该对象中的号码(fetchNumbe).并判断是否为空,若不为空,则进行服务(服务时间用Thread.sleep()实现).服务时间是随机,若不为空则调用commonService()方法,为普通客户服务.
注:
Common和Vip的服务时间,是在最大值和最小值之间随机产生的.最大值和最小值可定义成一个类的静态常量,再进行获取.
5,创建测试类BankTest
创建4个类型为Common的WindowService对象,windoweId递增.可通过循环进行创建.
创建1个类型为Express的WindowService对象,windoweId不变.
创建1个类型为Vip的WindowService对象,windoweId不变.
创建三个定时器,定时为不同类型的用户添加客户.(通过NumberMachine.getInstance.getXxx().generateNumber();模拟用户的添加)- java面试题之银行业务调度系统
- 黑马程序员—java面试题之银行业务调度系统
- java面试题之二 银行业务调度系统
- java自学笔记之面试题银行业务调度系统
- 面试题之银行业务调度系统
- 面试题之------银行业务调度系统
- 面试题之银行业务调度系统
- 面试题之银行业务调度系统
- java7K面试题之银行业务调度系统
- java 面试题(二) 银行业务调度系统
- Java面试题(银行业务调度系统)
- 面试题:银行业务调度系统
- java面试题《交通灯管理系统》、《银行业务调度系统 》反思
- 黑马程序员--7K面试题之银行业务调度系统
- 黑马程序员-面试题之银行业务调度系统
- 黑马程序员_面试题之银行业务调度系统
- 黑马程序员__7k面试题之银行业务调度系统
- 黑马程序员_7k面试题之银行业务调度系统
- 最大间隙问题
- IOS开发:XCode5中显示行号
- 继续我的代码,分享我的快乐 - WEBUS2.0 资源汇总
- 继续我的代码,分享我的快乐 - WEBUS2.0 资源汇总
- C语言学习笔记
- java面试题之银行业务调度系统
- strncmp、strncpy、strncat、strlen库函数的实现
- WEBUS2.0 In Action - 创建索引
- WEBUS2.0 In Action - 开始搜索 [代码示例]
- WEBUS2.0 In Action - 解析索引文件结构(1)
- WEBUS2.0 In Action - 解析索引文件结构(2)
- 我的嵌入式学习之路——笔记计划
- Database system concept笔记(3)
- vs2012编译的程序在XP下运行提示无法定位输入点XXXXX到kernel32.dll