算法学习笔记—环形缓冲区 |
public class RingBuffer<Item> {
/**
* @param args
*/
private Item[] a;
private int first=0, last=0;
public RingBuffer(int N){
a = (Item[]) new Object[N];
}
public boolean isEmpty(){ return first == last; }
public boolean isFull(){ return (first+1)%a.length == last%a.length; }
public void putProduction(Item item){
while(isFull()); //当满的时候,等待
a[(first++)%a.length] = item;
}
public Item getProduction(){
while(isEmpty()); //当空的时候,等待
return a[(last++)%a.length];
}
}