`

java queue

 
阅读更多

package com.ruyicai.queue;



import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.locks.ReentrantLock;
import com.ruyicai.generalinterface.*;
import com.ruyicai.main.MobilePlatLog;


/**
 *队列管理类,提供队列操作的方法
 * @author root
 *
 */
public class QueueManager {

	private static BlockingDeque<Deliverpackage> deliverqueue=new LinkedBlockingDeque<Deliverpackage>();
	private static BlockingDeque<Submitpackage> submitqueue=new LinkedBlockingDeque<Submitpackage>();
	private static ReentrantLock delivertakelock=new ReentrantLock();
	private static ReentrantLock deliverputlock=new ReentrantLock();
	private static ReentrantLock submittakelock=new ReentrantLock();
	private static ReentrantLock submitputlock=new ReentrantLock();



	/**
	 * 从上行队列中取一条消息
	 * @param 
	 * @return 上行消息对象
	 * @throws InterruptedException 
	 */
	public static Deliverpackage getDeliverPackage() throws InterruptedException{
		try{
			delivertakelock.lock();
			return (Deliverpackage)deliverqueue.takeLast();
		}
		finally{
			delivertakelock.unlock();
		}
	}
	
	/**
	 * 往上行队列中写一条消息
	 * @param 上行消息对象
	 * @return 
	 * @throws InterruptedException 
	 */
	public static void putDeliverPackage(Deliverpackage deliverpkg) throws InterruptedException{
		try{
			deliverputlock.lock();
			deliverqueue.putFirst(deliverpkg);
			MobilePlatLog.log("当前上行队列数据:"+deliverqueue.size()+"条");
		}
		finally{
			deliverputlock.unlock();
		}
	}
	
	/**
	 * 获取上行队列当前消息数量
	 * @param 
	 * @return 上行队列当前消息数量
	 */	
	public static int GetDeliverQueueSize(){
		return deliverqueue.size();
	}
	
	/**
	 * 从下行队列中取一条消息
	 * @param 
	 * @return 下行消息对象
	 * @throws InterruptedException 
	 */
	public static Submitpackage getSubmitPackage() throws InterruptedException{
		try{
			submittakelock.lock();
			return (Submitpackage)submitqueue.takeLast();
		}
		finally{
			submittakelock.unlock();
		}
	
	}
	
	/**
	 * 往下行队列中写一条消息
	 * @param 下行消息对象
	 * @return 
	 * @throws InterruptedException 
	 */	
	public static void putSubmitPackage(Submitpackage submitpkg) throws InterruptedException{
		try{
			submitputlock.lock();
			submitqueue.putFirst(submitpkg);
			MobilePlatLog.log("当前下行队列数据:"+submitqueue.size()+"条");
		}
		finally{
			submitputlock.unlock();
		}
	}
	 
	/**
	 * 获取下行队列当前消息数量
	 * @param 
	 * @return 下行队列当前消息数量
	 */	
	public static int getSubmitQueueSize(){
		return submitqueue.size();
	
	}
	
	/**
	 * 获取上行队列
	 * @param 
	 * @return 上行队列对象
	 */	
	public BlockingDeque<Deliverpackage> getDeliverQueue(){
		return this.deliverqueue;
	}
	 
	/**
	 * 获取下行队列
	 * @param 
	 * @return 下行队列对象
	 */	
	public BlockingDeque<Submitpackage> getSubmitQueue(){
		return this.submitqueue;
	
	}

}



更多内容http://www.ibm.com/developerworks/cn/java/j-5things4.html?ca=drs-
分享到:
评论

相关推荐

    11.javaQueue 接口及其实现类.zip

    11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue ...

    java代码-java Queue 应用,先进先出用法实例, 只保留200个, 将其他数据按先进先出的规则弹出,LinkedList 实现了 Queue接口,

    Java中的队列(Queue)是一种线性数据结构,遵循先进先出(First In First Out, FIFO)的原则。在这个实例中,我们重点讨论如何利用Java的`java.util.Queue`接口和`java.util.LinkedList`类来实现一个只保留最近200...

    Java Queue and Agents Framework-开源

    Java Queue and Agents Framework 是一个开源项目,专注于在Java环境中实现多线程和分布式处理的解决方案。这个框架提供了一个工具集,允许开发者通过Remote Method Invocation (RMI) 技术将任务队列化,并分发到...

    java定时器+多线程(池)+java队列Demo

    Java中的`java.util.Queue`接口提供了多种队列实现,如`ArrayDeque`、`LinkedList`和`PriorityQueue`。队列可以用于任务调度,例如,`ExecutorService`的`submit`方法将任务放入内部队列,由线程池按顺序处理。此外...

    java 自定义Queue队列

    在Java编程语言中,`Queue`接口是集合框架的一部分,它代表了先进先出(FIFO)的数据结构,也就是我们通常所说的队列。队列是一种非常基础且实用的数据结构,广泛应用于多线程同步、任务调度、缓存管理等多个场景。...

    JAVA 数据结构之Queue处理实例代码

    本篇文章将深入探讨Java中的Queue数据结构,并通过具体的实例代码来展示其使用。 Queue是一种先进先出(First In First Out, FIFO)的数据结构,意味着最先添加到队列中的元素将最先被移除。在Java中,`java.util....

    JAVA连接IBM MQ代码

    在IT行业中,Java是一种广泛应用的编程语言,而IBM MQ(原名WebSphere MQ)是IBM提供的消息中间件,用于在不同系统之间可靠地传递数据。本文将深入探讨如何使用Java来连接IBM MQ,以实现跨平台的信息交换。 首先,...

    Java_0613_java_源码

    在Java编程语言中,"优先阻塞队列"(Priority Blocking Queue)是一个高效且功能强大的数据结构,它结合了队列的先进先出(FIFO)原则与堆的优先级特性。优先阻塞队列主要用在多线程环境中,为并发处理提供了便利。...

    java定时器\多线程(池)\java队列Demo

    `java.util.Queue` 提供了多种队列实现,如 `ArrayBlockingQueue`, `LinkedBlockingQueue` 和 `PriorityQueue`。队列可以在多线程环境下安全地添加和移除元素,通常与 `ExecutorService` 结合使用,作为任务的提交和...

    java中queue接口的使用详解

    Java中的`Queue`接口是Java集合框架的一部分,它位于`java.util`包中,是`Collection`接口的子接口。`Queue`接口主要用于实现队列数据结构,它遵循先进先出(FIFO)的原则,即最先添加的元素会被最先移除。在Java中...

    java队列之queue用法实例分析

    java队列之queue用法实例分析主要介绍了java队列之queue用法实例分析,Queue 队列就是一个先入先出(FIFO)的数据结构,Queue接口继承Collection接口。Queue接口与List、Set同一级别,都是继承了Collection接口。 ...

    优先队列-java可以选择属性和升序降序

    优先队列在Java编程中是一种特殊的数据结构,它遵循特定的出队顺序,通常是最小元素(最小优先队列)或最大元素(最大优先队列)先出队。这种数据结构在解决各种问题时非常有用,例如任务调度、事件驱动编程、搜索...

    一文弄懂java中的Queue家族

    java中Queue家族简介 简介 java中Collection集合有三大家族List,Set和Queue。当然Map也算是一种集合类,但Map并不继承Collection接口。 List,Set在我们的工作中会经常使用,通常用来存储结果数据,而Queue由于它的...

    java连接mq的demo

    Java连接IBM MQ(WebSphere MQ)的Demo是一个典型的示例,用于展示如何在Java应用程序中与MQ消息中间件进行通信。IBM MQ是一个高效、可靠的消息传递系统,它允许分布式应用程序通过消息传递方式进行通信,从而解耦...

    java程序利用mq发送消息

    在IT行业中,消息队列(Message Queue,MQ)是一种常用于分布式系统中的中间件,它允许应用程序异步地通信,从而提高系统的响应速度和可扩展性。本话题将聚焦于如何使用Java编程语言来实现通过IBM WebSphere MQ发送...

    filequeue:轻量级,高性能,简单,可靠和持久的Java应用程序队列

    File Queue项目为Java应用程序提供了一个轻量级,高性能,简单,可靠和持久的队列。 所有生产者和使用者都在单个Java运行时中运行。 为了提供持久性,File Queue利用了H2的数据库引擎。 队列项目是常规的Java POJO,...

Global site tag (gtag.js) - Google Analytics