⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queue.java

📁 Logica lastest SMPP API
💻 JAVA
字号:
/* * Copyright (c) 1996-2001 * Logica Mobile Networks Limited * All rights reserved. * * This software is distributed under Logica Open Source License Version 1.0 * ("Licence Agreement"). You shall use it and distribute only in accordance * with the terms of the License Agreement. * */package com.logica.smpp.util;import java.util.LinkedList;import java.util.ListIterator;import com.logica.smpp.SmppObject;/** * Implements fifo style queue with removal of specified element from inside of * the queue. *  * @author Logica Mobile Networks SMPP Open Source Team * @version 1.2, 1 Oct 2001 *//*  13-07-01 ticp@logica.com added dequeue(Object) method which finds and removes                           object which equals() to the provided one                           (not too queue-ish)  01-10-01 ticp@logica.com added some javadoc comments*/public class Queue extends SmppObject{    private int maxQueueSize = 0;    private LinkedList queueData = new LinkedList();    private Object mutex;    public Queue()     {        mutex = this;    }    public Queue(int maxSize)     {        maxQueueSize = maxSize;        mutex = this;    }    /**     * Current count of the elements in the queue.     */    public int size()    {        synchronized (mutex) {            return queueData.size();        }    }    /**     * If there is no element in the queue.     */    public boolean isEmpty()     {        synchronized (mutex) {            return queueData.isEmpty();        }    }    /**     * Removes first element form the queue and returns it.     * If the queue is empty, returns null.     */     public Object dequeue()    {        synchronized (mutex) {            Object first = null;            if (size() > 0) {                first = queueData.removeFirst();            }            return first;        }    }    /**     * Tries to find the provided element in the queue and if found,     * removes it from the queue and returns it.     * If the element is not found returns null.     */     public Object dequeue(Object obj)    {        Object found = null;        synchronized (mutex) {            found = find(obj);            if (found != null) {                queueData.remove(found);            }        }        return found;    }    /**     * Appends an element to the end of the queue. If the queue     * has set limit on maximum elements and there is already specified     * max count of elements in the queue throws IndexOutOfBoundsException.     */    public void enqueue(Object obj) throws IndexOutOfBoundsException    {        synchronized (mutex) {            if ((maxQueueSize > 0) && (size() >= maxQueueSize))                {                    throw new IndexOutOfBoundsException("Queue is full. Element not added.");                }            queueData.add(obj);        }    }    /**     * Searches the queue to find the provided element.     * Uses <code>equals</code> method to compare elements.     */    public Object find(Object obj)    {        synchronized (mutex) {            Object current;            ListIterator iter = queueData.listIterator(0);            while (iter.hasNext()) {                current = iter.next();                if (current.equals(obj)) {                    return current;                }            }        }        return null;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -