简单的队列代码
实体类
package com.interview.queue;
/**
* Describe:queue实体
* User:tangWind
* Date:16/11/3
* Time:下午4:41
*/
public class QueuePojo {
private String queueName;
private String queueDes;
private String queueContext;
public String getQueueName() {
return queueName;
}
public void setQueueName(String queueName) {
this.queueName = queueName;
}
public String getQueueDes() {
return queueDes;
}
public void setQueueDes(String queueDes) {
this.queueDes = queueDes;
}
public String getQueueContext() {
return queueContext;
}
public void setQueueContext(String queueContext) {
this.queueContext = queueContext;
}
}
封装的方法类
package com.interview.queue;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ArrayBlockingQueue;
/**
* Describe:队列
* User:tangWind
* Date:16/11/3
* Time:下午4:39
*/
public class LQueue {
private static LQueue lQueue;
private static Map<String, ArrayBlockingQueue<QueuePojo>> queueMap = new HashMap<String, ArrayBlockingQueue<QueuePojo>>();
/**
* 单利实例化
*
* @return
*/
public static LQueue getInstance() {
if (null == lQueue) {
lQueue = new LQueue();
}
return lQueue;
}
/**
* 创建队列
*
* @param queueName
*/
public void createQueue(String queueName) {
if (null == queueMap.get(queueName)) {
ArrayBlockingQueue<QueuePojo> arrayBlockingQueue = new ArrayBlockingQueue<QueuePojo>(100);
queueMap.put(queueName, arrayBlockingQueue);
}
}
/**
* 根据名称获取队列
*
* @param queueName
* @return
*/
public ArrayBlockingQueue<QueuePojo> getQueueByName(String queueName) {
return queueMap.get(queueName);
}
/**
* 根据名称判断队列是否存在
*
* @param queueName
* @return
*/
public boolean isExitsQueueByName(String queueName) {
return getQueueByName(queueName) != null;
}
/**
* 销毁队列
*/
public void destory() {
for (ArrayBlockingQueue<QueuePojo> queue : queueMap.values()) {
queue.clear();
}
queueMap.clear();
}
public QueuePojo take(String queueName) {
QueuePojo pojo = null;
try {
pojo = getQueueByName(queueName).take();
} catch (InterruptedException e) {
e.printStackTrace();
}
return pojo;
}
/**
* 元素插入到队列中
*
* @param queueName
* @param pojo
* @return
*/
public boolean offer(String queueName, QueuePojo pojo) {
if (isExitsQueueByName(queueName)) {
try {
queueMap.get(queueName).put(pojo);
} catch (InterruptedException e) {
e.printStackTrace();
}
return true;
}
return false;
}
}
主函数测试类
package com.interview.queue;
import java.util.concurrent.ArrayBlockingQueue;
/**
* Describe:队列测试
* User:tangWind
* Date:16/11/3
* Time:下午8:11
*/
public class TestQueue {
/**
* @param args
*/
public static void main(String[] args) {
LQueue lQueue = LQueue.getInstance();
ArrayBlockingQueue<QueuePojo> cc = null;
lQueue.createQueue("test");
QueuePojo pojo1 = new QueuePojo();
QueuePojo pojo2 = new QueuePojo();
QueuePojo pojo3 = new QueuePojo();
pojo1.setQueueName("test1");
pojo1.setQueueDes("测试");
pojo1.setQueueContext("内容");
lQueue.offer("test", pojo1);
cc = lQueue.getQueueByName("test");
pojo2.setQueueName("test2");
pojo2.setQueueDes("测试");
pojo2.setQueueContext("内容");
lQueue.offer("test", pojo2);
cc = lQueue.getQueueByName("test");
pojo3.setQueueName("test3");
pojo3.setQueueDes("测试");
pojo3.setQueueContext("内容");
lQueue.offer("test", pojo3);
cc = lQueue.getQueueByName("test");
lQueue.take("test");
System.out.println("1111");
}
}