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];
}
}
算法 第四版 1.3.39 环形缓冲区
最新推荐文章于 2022-07-02 23:07:32 发布