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

📄 asynccentral.java

📁 更方便的SWING
💻 JAVA
字号:
/*
 * PSwing Utilities -- Nifty Swing Widgets
 * Copyright (C) 2002  Pallas Technology
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * 
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 * 
 * Pallas Technology
 * 1170 HOWELL MILL RD NW
 * SUITE 306
 * ATLANTA GEORGIA 30318
 * 
 * PHONE 404.983.0623
 * EMAIL info@pallastechnology.com
 * 
 * www.pallastechnology.com
 **************************************************************************
 * $Archive: SwingTools$
 * $FileName: AsyncCentral.java$
 * $FileID: 7$
 *
 * Last change:
 * $AuthorName: Rob MacGrogan$
 * $Date: 1/28/03 8:08 PM$
 * $VerID: 57$
 * $Comment: Added GLPL text.$
 **************************************************************************/
package com.pallas.util;

import java.util.Vector;

/**
 * Title:   $FileName: AsyncCentral.java$
 * @version $VerNum: 2$
 * @author $AuthorName: Rob MacGrogan$<br><br>
 * 
 * $Description: Asynchronously executes Async objects.$<br>
 * $KeyWordsOff: $<br>
 */
public class AsyncCentral {

  private static AsyncCentral instance = new AsyncCentral();
  private FireThread fire = null;

  private AsyncCentral(){
    fire = new FireThread();
    fire.start();
  }

  public static AsyncCentral getInstance(){
    return instance;
  }

  protected synchronized void waitTillNotified()
        throws InterruptedException{
    wait();
  }

  public synchronized void runAsync(Async a){
    fire.addProcess(a);
    notifyAll();
  }

  protected class FireThread extends Thread{

    Vector mvecProcesses = new Vector();

    public FireThread(){}
    private boolean mbRunning = false;

    public void addProcess(Async a){
      mvecProcesses.add(a);
    }

    public void run(){
      try{
        mbRunning = true;
        while (true){
          while (mvecProcesses.size() > 0){
            Async a = (Async)mvecProcesses.remove(0);
            a.execute();
          }
          try {
            AsyncCentral.getInstance().waitTillNotified();
          }
          catch (InterruptedException ex){
            //Just continue.
          }
        }
      }
      catch (Exception ex){
        System.out.println("Exception in FireThread.");
        ex.printStackTrace();
      }
      finally{
        mbRunning = false;
      }
    }//end run()

    public boolean isRunning(){
      return mbRunning;
    }
  }//end FireThread

}

⌨️ 快捷键说明

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