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 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue 接口及其实现类.zip11.javaQueue ...
Java中的队列(Queue)是一种线性数据结构,遵循先进先出(First In First Out, FIFO)的原则。在这个实例中,我们重点讨论如何利用Java的`java.util.Queue`接口和`java.util.LinkedList`类来实现一个只保留最近200...
Java Queue and Agents Framework 是一个开源项目,专注于在Java环境中实现多线程和分布式处理的解决方案。这个框架提供了一个工具集,允许开发者通过Remote Method Invocation (RMI) 技术将任务队列化,并分发到...
Java中的`java.util.Queue`接口提供了多种队列实现,如`ArrayDeque`、`LinkedList`和`PriorityQueue`。队列可以用于任务调度,例如,`ExecutorService`的`submit`方法将任务放入内部队列,由线程池按顺序处理。此外...
在Java编程语言中,`Queue`接口是集合框架的一部分,它代表了先进先出(FIFO)的数据结构,也就是我们通常所说的队列。队列是一种非常基础且实用的数据结构,广泛应用于多线程同步、任务调度、缓存管理等多个场景。...
本篇文章将深入探讨Java中的Queue数据结构,并通过具体的实例代码来展示其使用。 Queue是一种先进先出(First In First Out, FIFO)的数据结构,意味着最先添加到队列中的元素将最先被移除。在Java中,`java.util....
在IT行业中,Java是一种广泛应用的编程语言,而IBM MQ(原名WebSphere MQ)是IBM提供的消息中间件,用于在不同系统之间可靠地传递数据。本文将深入探讨如何使用Java来连接IBM MQ,以实现跨平台的信息交换。 首先,...
在Java编程语言中,"优先阻塞队列"(Priority Blocking Queue)是一个高效且功能强大的数据结构,它结合了队列的先进先出(FIFO)原则与堆的优先级特性。优先阻塞队列主要用在多线程环境中,为并发处理提供了便利。...
`java.util.Queue` 提供了多种队列实现,如 `ArrayBlockingQueue`, `LinkedBlockingQueue` 和 `PriorityQueue`。队列可以在多线程环境下安全地添加和移除元素,通常与 `ExecutorService` 结合使用,作为任务的提交和...
Java中的`Queue`接口是Java集合框架的一部分,它位于`java.util`包中,是`Collection`接口的子接口。`Queue`接口主要用于实现队列数据结构,它遵循先进先出(FIFO)的原则,即最先添加的元素会被最先移除。在Java中...
java队列之queue用法实例分析主要介绍了java队列之queue用法实例分析,Queue 队列就是一个先入先出(FIFO)的数据结构,Queue接口继承Collection接口。Queue接口与List、Set同一级别,都是继承了Collection接口。 ...
优先队列在Java编程中是一种特殊的数据结构,它遵循特定的出队顺序,通常是最小元素(最小优先队列)或最大元素(最大优先队列)先出队。这种数据结构在解决各种问题时非常有用,例如任务调度、事件驱动编程、搜索...
java中Queue家族简介 简介 java中Collection集合有三大家族List,Set和Queue。当然Map也算是一种集合类,但Map并不继承Collection接口。 List,Set在我们的工作中会经常使用,通常用来存储结果数据,而Queue由于它的...
Java连接IBM MQ(WebSphere MQ)的Demo是一个典型的示例,用于展示如何在Java应用程序中与MQ消息中间件进行通信。IBM MQ是一个高效、可靠的消息传递系统,它允许分布式应用程序通过消息传递方式进行通信,从而解耦...
在IT行业中,消息队列(Message Queue,MQ)是一种常用于分布式系统中的中间件,它允许应用程序异步地通信,从而提高系统的响应速度和可扩展性。本话题将聚焦于如何使用Java编程语言来实现通过IBM WebSphere MQ发送...
File Queue项目为Java应用程序提供了一个轻量级,高性能,简单,可靠和持久的队列。 所有生产者和使用者都在单个Java运行时中运行。 为了提供持久性,File Queue利用了H2的数据库引擎。 队列项目是常规的Java POJO,...