Algorithms-1_3

环形缓冲区

Posted by Zz on January 11, 2018
算法学习笔记—环形缓冲区
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];  
    }  
      
}