
com.weicoder.common.queue.AsynQueue Maven / Gradle / Ivy
package com.weicoder.common.queue;
import java.util.Collection;
import java.util.Queue;
import com.weicoder.common.U;
import com.weicoder.common.concurrent.ScheduledUtil;
import com.weicoder.common.interfaces.CallbackVoid;
import com.weicoder.common.log.Log;
import com.weicoder.common.log.LogFactory;
import com.weicoder.common.util.MathUtil;
/**
* 异步回调处理队列数据
*
* @author WD
*/
public class AsynQueue {
// 日志
private final static Log LOG = LogFactory.getLog(AsynQueue.class);
// 队列
private Queue queue;
/**
* 构造
*
* @param queue 队列
* @param callback 回调
* @param time 时间 毫秒
*/
public AsynQueue(Queue queue, CallbackVoid callback, long time) {
this.queue = queue;
// 定时任务
ScheduledUtil.delay(() -> {
int n = 0;
long c = System.currentTimeMillis();
// 队列不为空
while (U.E.isNotEmpty(queue)) {
E e = queue.poll();
callback.callback(e);
n++;
LOG.debug("AsynQueue run i={} obj={}", n, e);
}
LOG.info("AsynQueue run size={} time={}", n, System.currentTimeMillis() - c);
}, time);
}
/**
* 构造
*
* @param queue 队列
* @param callback 回调
* @param time 时间 秒
*/
public AsynQueue(Queue queue, CallbackVoid callback, int time) {
this(queue, callback, MathUtil.multiply(time, 1000).longValue());
}
/**
* 添加元素到队列
*
* @param e
* @return 是否成功
*/
public boolean add(E e) {
return queue.add(e);
}
/**
* 添加列表到队列
*
* @param c 列表
* @return 是否成功
*/
public boolean addAll(Collection extends E> c) {
return queue.addAll(c);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy