package com.mth.bank;
import java.util.ArrayList;
import java.util.List;
/*
*
* 号码管理器
* 其中generateNewManager()和fetchServiceNumber()访问了同一个数据
* 那么就需要进行同步
* 多个线程来操作的时候就会实现互斥
*
* */
public class NumberManager {
private int lastNumber = 1;
private List<Integer> list = new ArrayList<Integer>();
// 新来的客户新产生一个号码
public synchronized Integer generateNewManager() {
// 服务了50号 但是队列中有150人 所以得用集合吧号码存起来
list.add(lastNumber);
return lastNumber++;
}
// 服务窗口取号的方法(集合的第一个元素)
public synchronized Integer fetchServiceNumber() {
if (list.size() > 0)
return list.remove(0);
return null;
}
}