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代码-java Queue 应用,先进先出用法实例, 只保留200个, 将其他数据按先进先出的规则弹出,LinkedList 实现了 Queue接口,
java 自定义Queue队列 java 自定义Queue队列
主要介绍了JAVA 数据结构之Queue处理实例代码的相关资料,需要的朋友可以参考下
java定时器+多线程(池)+java队列Demo
本篇文章主要介绍了java中queue接口的使用详解,对学习Queue接口有一定的帮助,感兴趣的小伙伴们可以参考一下。
Sun Java System Message Queue
java中Queue家族简介 简介 java中Collection集合有三大家族List,Set和Queue。当然Map也算是一种集合类,但Map并不继承Collection接口。 List,Set在我们的工作中会经常使用,通常用来存储结果数据,而Queue由于它的...
File Queue项目为Java应用程序提供了一个轻量级,高性能,简单,可靠和持久的队列。 所有生产者和使用者都在单个Java运行时中运行。 为了提供持久性,File Queue利用了H2的数据库引擎。 队列项目是常规的Java POJO,...
主要介绍了java队列之queue用法实例分析,Queue 队列就是一个先入先出(FIFO)的数据结构,Queue接口继承Collection接口。感兴趣的可以了解一下
Queue接口 – 队列1.1 ConcurrentLinkedQueue类(线程安全)2. BlockingQueue接口 – 阻塞队列2.1 ArrayBlockingQueue类(有界阻塞队列)2.2 LinkedBlockingQueue类(无界阻塞队列)3. 源码:BlockingQueue实现生产...
Java Queue,scheduler,ThreadPoolManager,两套例子,直接可以运行的。
Java 中多线程和分布式框架的库和示例集合,用于通过 RMI 将作业排队到本地代理或远程代理。 目的是帮助教授多线程和分布式服务器的介绍。
一、JDBC的批量插入 一、JDBC的批量更新 一、JDBC的批量删除 一、JDBC的批量修改
队列监视器 使用 Java 的队列监视器
Queue.java
queue using link list java implementation