All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.weicoder.common.queue.AsynQueueList Maven / Gradle / Ivy

package com.weicoder.common.queue;

import java.util.Collection;
import java.util.List;
import java.util.Queue;

import com.weicoder.common.U;
import com.weicoder.common.concurrent.ScheduledUtil;
import com.weicoder.common.interfaces.CallbackList;
import com.weicoder.common.lang.Lists;
import com.weicoder.common.log.Log;
import com.weicoder.common.log.LogFactory;

/**
 * 异步回调处理队列数据
 * @author WD
 */
public class AsynQueueList {
	// 日志
	private final static Log	LOG	= LogFactory.getLog(AsynQueueList.class);
	// 队列
	private Queue			queue;

	/**
	 * 构造
	 * @param queue 队列
	 * @param callback 回调
	 * @param time 时间 毫秒
	 */
	public AsynQueueList(Queue queue, CallbackList callback, long time) {
		this.queue = queue;
		// 定时任务
		ScheduledUtil.delay(() -> {
			// 队列为空 直接返回
			if (queue.isEmpty())
				return;
			int n = 0;
			long c = System.currentTimeMillis();
			List result = Lists.newList();
			// 队列不为空
			while (U.E.isNotEmpty(queue)) {
				E e = queue.poll();
				result.add(e);
				n++;
				LOG.debug("AsynQueueList run i={} obj={}", n, e);
			}
			// 执行
			callback.callback(result);
			LOG.info("AsynQueueList run size={} time={}", n, System.currentTimeMillis() - c);
		}, time);
	}

	/**
	 * 添加元素到队列
	 * @param e
	 * @return 是否成功
	 */
	public boolean add(E e) {
		return queue.add(e);
	}

	/**
	 * 添加列表到队列
	 * @param c 列表
	 * @return 是否成功
	 */
	public boolean addAll(Collection c) {
		return queue.addAll(c);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy