传智播客-bank-day12
来源:互联网 发布:美萍软件怎么审核 编辑:程序博客网 时间:2024/05/07 11:53
---------------------- android培训、java培训、期待与您交流! ----------------------
7k------bank
NumberManager://要有一个号码管理器
1,号码生成器
2,叫号程序
1.号码生成器:
public synchronized int generateNewManager(){
//generate-->形成,造成,产生
queueNumber.add(lastNumber);//将生成的号码加入队列中。queue-->队列
return lastNumber++;
}
2.叫号
public synchronized int fetchServiceNumber(){
return queueNumber.remove(0);
}
NumberManager.java
public class NumberManager{
private int lastNumber=1;
private List<Integer> queueNumber=new ArrayList<Integer>();
public synchronized Integer generateNewManager(){ //generate-->形成,造成,产生
queueNumber.add(lastNumber);
//将生成的号码加入队列中。queue-->队列
return lastNumber++;
}
public synchronized Integer fetchServiceNumber(){
return queueNumber.remove(0);
}
}
导包名:Alt+/
NumberMachine:
//号码生成器:
//号码机会返回三个对象,即commonManager(普通),expressManager(快速),VIPManager(VIP)
public class NumberMachine{
private NumberManager commonManager = new NumberManager();
private NumberManager expressManager = new NumberManager();
private NumberManager vipManager = new NumberManager();
public NumberManager commonManager(){
return commonManager;
}
public NumberManager expressManager(){
return expressManager;
}
public NumberManager vipManager(){
return vipManager;
}
//以上是叫号机产生的三种类型号码
//单例此对象
//构造函数私有化
private NumberMachine(){}
public static NumberMachine getInstance(){
return instance;
}
//new对象
public static NumberMachine instance= new NumberMachine();
}
//顾客类型
customer-->客户
CustomerType:
public enum CustomerType{
COMMON,EXPRESS,VIP;
//为了显示中文,覆盖tostring方法
public String toString(){
switch(this){
case COMMON:
return "普通";
case EXPRESS:
return "普通";
case VIP:
//enum中的一个方法(name())用于返回枚举名称
return name();
}
}
}
6
//服务窗口
ServiceWindow:
public class ServiceWindow{
private CustomerType type=CustomerType.COMMON
private int windowId=1;
//此处提供一个set方法,用于在外部设置用户类型
public void setType(CustomerType type){
this.type=type;
}
//此处提供一个set方法,用于在外部设置窗口Id
public void setWindowId(int windowId){
this.windowId=windowId;
}
public void start(){
//1.5新特性,executors
Executors.newSingleThreadExecutor().execute(new runnable
}
}
系统时间-->System.currentTimeMillis()
eclapsed-->
cast-->
custmoer.java中
????public String toString()方法中的this用其它的行不?如果能改可以改成什么?
8
????//window.start();这里的start()方法,是第7节中ServiceWindow中的一个start方法和线程是不是没有关系。
//在ServiceWindow也没有中我也没有找到extends Thread类,和Interface Runnable接口,但是在start()方法中
//有启动线程池,也有覆盖Run()方法
MainClass.java中
.start中启动线程。
//这里注释下,对1.5的新特性不清楚,在ServiceWindow中的线程池中new了一个runnable对象,并建了内部类。(这里有点乱,之前学的
thread方法:1.extends Thread继承 2.implements Runnable实现接口。这里没继承也没实现,直接new了runnable对象的内部类)
定时器线程:Executors.newScheduledThreadpool(1).scheduleAtFixedRate()
//这里可参见api中的Executors.newScheduledThreadpool(1).scheduleAtFixedRate()方法
思想:
1,主函数中先开启所有窗口(一个窗口一个线程)。用.start()方法。
2,根据需求,有三类客户,所以定义三个定时器(common,express,vip)
这里定时器的第一个参数依然是new Runnable的匿名内部类。
????为什么调用numberMachine.getinstance().getcommonManager().generateNewManager()
答:这里程序要从叫号开始运行。
---------------------- android培训、java培训、期待与您交流! ----------------------
- 传智播客-bank-day12
- day12
- day12
- day12
- day12
- day12
- day12
- day12
- Day12
- day12
- Day12
- day12
- day12
- day12
- day12
- Day12
- 传智播客-Java学习笔记day12
- bank
- 使用 Strace 调试工具
- last line of file ends without a newline
- 【Media Foundation】简单实例 - 使用Media Session来播放文件
- mysql存储引擎对比
- [转]在windows下使用linux命令
- 传智播客-bank-day12
- winetricks官方介绍
- 阻塞赋值和非阻塞赋值
- 寻找第K大的数
- [高可用性] 负载均衡,会话保持,session同步
- AJAX传值中文乱码
- 正则表达式中的特殊字符
- 我国去年11起拆迁致人伤亡案57人被处理-拆迁-强拆-环保
- mcasp I2S 音频