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

📄 dispatcherpool.java

📁 java异步事件池
💻 JAVA
字号:
/*
 * Created on 2003-12-22
 *
 * To change the template for this generated file go to
 * Window - Preferences - Java - Code Generation - Code and Comments
 */
package com.product.util.event;

import java.util.Iterator;
import java.util.Vector;

/**
 * @author Renzhichao
 *
 * To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Generation - Code and Comments
 */
public class DispatcherPool implements Runnable {
    private static DispatcherPool inst = new DispatcherPool() ; 
    static Vector pool = null ;
    private boolean flag = true ;
    private DispatcherPool(){
        pool = new Vector() ;
        loadFromConfig() ;
        new Thread(this).start() ;
    }
    
    public static DispatcherPool getInstance(){
        return inst ;
    }
    
    public Vector getPool(){
        return pool ;
    }
    
    /**
     * 停止所有的事件处理器。
     *
     */
    public void stopAll(){
        for (Iterator iter = pool.iterator(); iter.hasNext(); ) {
            Dispatcher element = (Dispatcher) iter.next();
            element.stop() ;
        }
    }
    
    /**
     * 待实现的监控类。用来监控对应的处理池,一旦有问题可以stop.
     *
     */
    private void monite(){
        
    }
    /* (non-Javadoc)
     * @see java.lang.Runnable#run()
     */
    public void run() {
        while(flag){
            monite() ;
        }
    }
    
    /**
     * 停止监控,用于系统繁忙的时候可以停止。
     *
     */
    public void stopMonite(){
        flag=false ;
    }
    
    /**
     * 向池中添加一个Dispatcher.
     * @param dispatcher
     */
    private void addDispatcher(Dispatcher dispatcher){
        new Thread(dispatcher).start() ;
        pool.add(dispatcher) ;
    }
    
    private void loadFromConfig(){
//        Config root = ServiceLoader.getInstance().getConfig().getConfig("DispatcherList");
//        Config[] configs = root.getSection("Dispatcher");
//        System.out.println("++++++++++++++ Dispatcher number is:"+configs.length);
//        for (int i = 0; i < configs.length; i++) {
//            Config config = configs[i];
//            try {
//                String evtName = config.getString("canHandlerEventClass") ;
//                boolean willTurnBack = config.getBoolean("willTurnBack") ;
//                Dispatcher dispatcher = new Dispatcher() ;
//                dispatcher.setCanHandlerEventClass(evtName) ;
//                dispatcher.setWillTurnBack(willTurnBack) ;
//                /**
//                 * 得到Dispatcher能够处理的EVENT和对应的Handler的信息
//                 */
//                Config[] handleCfgs = config.getSection("EventHandlers") ;
//                for (int j = 0; j < handleCfgs.length; j++) {
//                    Config handlerCfg = handleCfgs[j];
//                    String className = handlerCfg.getString("className") ;
//                    EventHandler handler = (EventHandler) Class.forName(className).newInstance() ;
//                    dispatcher.add(handler) ;
//                }
//                addDispatcher(dispatcher) ;
//            }
//            catch (ConfigException e) {         
//                e.printStackTrace();
//            }
//            catch (InstantiationException e) {
//                e.printStackTrace();
//            }
//            catch (IllegalAccessException e) {
//                e.printStackTrace();
//            }
//            catch (ClassNotFoundException e) {
//                e.printStackTrace();
//            }
//        }
        System.out.println("++++++++++++++ Add Dispatcher number is:"+pool.size());    
    }
    
}

⌨️ 快捷键说明

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