java_队列

简单的队列代码

实体类

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");

    }
}
文章目录
  1. 1. 实体类
  2. 2. 封装的方法类
  3. 3. 主函数测试类
,