java 缓冲池 BufferPool

来源:互联网 发布:mac启动盘制作 编辑:程序博客网 时间:2024/05/29 12:11
/** * 缓冲池 */public class BufferPool {private static final int BUFFER_SIZE = 2 * 1024 * 1024;//缓冲包2Mprivate static final int BUFFER_MAX_NUM = 20;//缓冲池保留最大数量private static final ConcurrentLinkedQueue<byte[]> buffers = new ConcurrentLinkedQueue<byte[]>();private static AtomicInteger countCreated = new AtomicInteger(0);//已创建的缓冲包个数/** 分配  */public static byte[] allocate() {byte[] result = buffers.poll();//创建新缓冲包if(result == null) {result = new byte[BUFFER_SIZE];//记录创建个数int count = countCreated.incrementAndGet();//日志if(count <= BUFFER_MAX_NUM) {LogCore.CORE.info("创建新的BufferPool缓冲池,已创建总数量:count={}", count);} else {LogCore.CORE.warn("创建新的BufferPool缓冲池,已创建总数量:count={}", count, new Throwable());}}return result;}/** * 回收 * @param buff  */public static void deallocate(byte[] buff) {//缓冲池已达上限if(buffers.size() >= BUFFER_MAX_NUM) return;//回收的缓冲大小必须正确if(buff.length != BUFFER_SIZE) return;//加回到池中buffers.add(buff);}}

1 0
原创粉丝点击