RingBuffer 筆記

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/woshimike/article/details/54093452
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();
    }
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章