RingBuffer 笔记
来源:互联网 发布:华为武汉研究所光网络 编辑:程序博客网 时间:2024/06/06 14:28
package com.lyq.jsoup.ringbuffer;import java.util.concurrent.atomic.AtomicLong;/** * Created by lyq on 2017/1/5. */public class ArrayRingBuffer { private AtomicLong count = new AtomicLong(); private int length ; Object[] array = null; ArrayRingBuffer(int length){ array = new Object[length]; this.length = length; } public long next(){ return count.incrementAndGet(); } public int put(Object o,long count){ int index = (int)count % length; array[index] = o; return index; } public Object get(long count){ int index = (int)count % length; return array[index]; }}
package com.lyq.jsoup.ringbuffer;import com.lyq.jsoup.testlist.Main;import java.util.Random;/** * Created by Administrator on 2017/1/5. */public class TestArrayRingBuffer { public static void main(String[] args){ ArrayRingBuffer arrayRingBuffer = new ArrayRingBuffer(4); new Thread(new Runnable() { @Override public void run() { for (int i = 0;i<10;i++){ long count = arrayRingBuffer.next(); int randomDouble = (int)(Math.random()*100); arrayRingBuffer.put(randomDouble,count); System.out.println("count="+count+" randomDouble:"+randomDouble); } } }).start(); new Thread(new Runnable() { @Override public void run() { for (long i = 0;i<12;i++){ System.out.println("randomDouble:"+arrayRingBuffer.get(i)); } } }).start(); }}
0 0