`
canofy
  • 浏览: 820465 次
  • 性别: Icon_minigender_1
  • 来自: 北京、四川
社区版块
存档分类
最新评论

环形缓冲区的简单实现

    博客分类:
  • j2EE
阅读更多
环形缓冲区的简单实现~
具体的业务逻辑需要具体的复杂化就行了~

package thread;

public class CircularBuf {
	int NMAX=3;
	
	int iput = 0; /* 环形缓冲区的当前放人位置 */

	int iget = 0; /* 缓冲区的当前取出位置 */

	int n = 0; /* 环形缓冲区中的元素总数量 */

	double buffer[]=new double[3];

	/* 环形缓冲区的地址编号计算函数,,如果到达唤醒缓冲区的尾部,将绕回到头部。

	环形缓冲区的有效地址编号为:0到(NMAX-1)

	*/
	public int addring (int i){
	     return (i+1) == NMAX ? 0 : i+1;
	}
	
	/* 从环形缓冲区中取一个元素 */
	public double get()	{
		int pos;
		if (n>0){
			pos = iget;
			iget = addring(iget);
			n--;
			System.out.println("get-->"+buffer[pos]);
			return buffer[pos];
	
		}else {
			System.out.println("Buffer is Empty");
			return 0.0;
		}
	}
	/* 向环形缓冲区中放人一个元素*/
	public void put(double z){
		if (n<NMAX){
			buffer[iput]=z;
			System.out.println("put<--"+buffer[iput]);
			iput = addring(iput);
			n++;
		}else  System.out.println("Buffer is full");
	}
	
	public static void main(String[] args){
		CircularBuf cb=new CircularBuf();
		cb.put(1);
		cb.put(2);
		cb.put(3);		
		cb.get();
		cb.put(4);
		cb.get();
		cb.get();
		cb.get();
	}
}

分享到:
评论
1 楼 ahuango 2010-01-13  
博主还是学生吧,看到你的文章大多与算法有关。

相关推荐

Global site tag (gtag.js) - Google Analytics