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

📄 commandqueue.java

📁 Rapla是一个灵活的多用户资源管理系统。它提供的一些功能有:日历GUI
💻 JAVA
字号:
/*--------------------------------------------------------------------------*
| Copyright (C) 2006  Christopher Kohlhaas                                 |
|                                                                          |
| This program is free software; you can redistribute it and/or modify     |
| it under the terms of the GNU General Public License as published by the |
| Free Software Foundation. A copy of the license has been included with   |
| these distribution in the COPYING file, if not go to www.fsf.org         |
|                                                                          |
| As a special exception, you are granted the permissions to link this     |
| program with every library, which license fulfills the Open Source       |
| Definition as published by the Open Source Initiative (OSI).             |
*--------------------------------------------------------------------------*/

package org.rapla.components.util;

import java.util.Vector;

/** Creates a new thread that successively executes the queued command objects
 *  @see Command
 */
public class CommandQueue  {
    private Vector v = new Vector();
    public synchronized void enqueue(Command object) {
        v.addElement( object );
    }

    public synchronized Command dequeue() {
        if ( v.size() == 0)
            return null;
        Object firstElement =v.firstElement();
        if ( firstElement != null) {
            v.removeElementAt( 0 );
        }
        return (Command) firstElement;
    }

    public void dequeueAll() {
        while ( dequeue() != null);
    }

    /** Creates a new Queue for Command Object.
        The commands will be executed in succession in a seperate Daemonthread.
        @see Command
     */
    public static CommandQueue createCommandQueue() {
        CommandQueue commandQueue = new CommandQueue();
        Thread eventThread= new MyEventThread(commandQueue);
        eventThread.setDaemon(true);
        eventThread.start();
        return commandQueue;
    }


    static class MyEventThread extends Thread {
        CommandQueue commandQueue;
        MyEventThread(CommandQueue commandQueue) {
            this.commandQueue = commandQueue;
        }
        public void run() {
            try {
                while (true) {
                    Command command = commandQueue.dequeue();
                    if (command == null) {
                        sleep(100);
                        continue;
                    }
                    try {
                        command.execute();
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                }
            } catch (InterruptedException ex) {
            }
        }
    }




}


⌨️ 快捷键说明

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