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

📄 asyncmessagequeue.java

📁 Ftp服务1.0
💻 JAVA
字号:
package ranab.util;

/**
 * Simple message queue implementation.
 *
 * @author <a href="mailto:rana_b@yahoo.com">Rana Bhattacharyya</a> 
 */
public
class AsyncMessageQueue implements Runnable {
    
    private Queue mMsgQueue;
    private boolean mbStopRequest;
    private Thread mThread;
    
    /**
     * Constructor - instantiate the queue and start the thread.
     */
    public AsyncMessageQueue() {
        mMsgQueue = new Queue(true);
        mbStopRequest = false;
        mThread = new Thread(this);
        mThread.start();
    }
    
    /**
     * Add a new message object.
     */
    public void add(Message msg) {
        if(mbStopRequest) {
            throw new IllegalArgumentException("Message queue has been stopped.");
        }
        mMsgQueue.put(msg);
    }
    
    /**
     * Get the number of elements in the queue.
     */
    public int size() {
        return mMsgQueue.size();
    }
    
    /**
     * Get max size
     */
    public int getMaxSize() {
        return mMsgQueue.getMaxSize();
    }
    
    /**
     * Set max size
     */
    public void setMaxSize(int maxSize) {
        mMsgQueue.setMaxSize(maxSize);
    }
    
    /**
     * Thread starting point - get message ant execute.
     */
    public void run() {
        while(!mbStopRequest) {
            Message msg = (Message)mMsgQueue.get();
            if(msg == null) {
                return;
            }
            try { 
                msg.execute(); 
            } 
            catch(Exception ex) {
                ex.printStackTrace();
            }
        }
    }
    
    /**
     * Stop the message queue.
     */
    public void dispose() {
        mbStopRequest = true;
        mMsgQueue.clear();
        if(mThread != null) {
            mThread.interrupt();
            mThread = null;
        }
    }

}    

⌨️ 快捷键说明

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