码迷,mamicode.com
首页 > 编程语言 > 详细

java常见队列及应用详解

时间:2020-06-25 21:19:17      阅读:345      评论:0      收藏:0      [点我收藏+]

标签:arraylist   code   list   另一个   err   keyword   struct   异常   Fix   

1. java常见队列:

(1) ArrayBlockingQueue:
        一个基于数组结构的有界阻塞队列, FIFO(先进先出)。
(2) LinkedBlockingQueue:
        一个基于链表结构的阻塞队列, 此队列按FIFO (先进先出) 排序元素, 
        吞吐量通常要高于ArrayBlockingQueue, 
        静态工厂方法 Executors.newFixedThreadPool() 使用了这个队列。
(3) SynchronousQueue:
        一个不存储元素的阻塞队列。
        每个插入操作必须等到另一个线程调用移除操作, 
        否则插入操作一直处于阻塞状态, 
        吞吐量通常要高于LinkedBlockingQueue, 静态工厂方法 Executors.newCachedThreadPool() 使用了这个队列。
(4) PriorityBlockingQueue:
        一个具有优先级的无限阻塞队列。











2.  LinkedBlockingQueue使用示例

public final static BlockingQueue<JSONObject> DATA_QUEUE = new LinkedBlockingQueue<>();

// 向队列中插入消息
public void upsertClinicStructData(JSONObject paramJson) {
    try {
        CLINIC_DATA_QUEUE.put(paramJson);
    } catch (InterruptedException e) {
        log.warn(CLINIC_DATA_QUEUE + " 队列保存数据异常! paramJson: " + paramJson, e);
    }
}

/**
 * 消费队列数据
 */
public void consmrClinicDataQueue() {
	List<JSONObject> list = Lists.newArrayList();
	DATA_QUEUE.drainTo(list, 1000);

	if (list.size() < 1) {
		log.debug(DATA_QUEUE + "队列元素为空");
		return;
	}

	log.info("从队列取出数据数目: " + list.size());

	// list处理逻辑
	...
}

 

java常见队列及应用详解

标签:arraylist   code   list   另一个   err   keyword   struct   异常   Fix   

原文地址:https://www.cnblogs.com/1994july/p/13192794.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!