特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过。如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/
1、问题描述
最近有一个异步写日志的需求,为了提高效率采用了异步批量插入的方式,大致思路是:有日志产生时存入指定队列,一个线程从队列中批量读取固定数量的日志,同时设置一个超时时间,避免了长时间未产生足够的日志从而不存库的情况。下面的demo模拟了基本流程。
2、操作方法
1、引入pom文件
com.google.guava
guava
28.1-jre
compile
2、代码片段
package com;
import com.google.common.collect.Queues;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
public class T {
/**
* 批量存入数量
*/
private static int NUM_ELEMENTS = 10;
/**
* 等待超时时间(单位:秒)
*/
private