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

📄 dispatcher.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.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 * @author Renzhichao
 *
 * 
 */
public class Dispatcher implements Runnable{ 
    private boolean flag = true ;
    
    private String canHandlerEventClass = "" ;
    
    public Dispatcher(){
    }
    Collection handlers = new ArrayList() ;    

    public synchronized void stop(){
        flag=false ;
    }

    /* (non-Javadoc)
     * @see java.lang.Runnable#run()
     */
    public void run() {
        while(flag){            
            if (canHandlerEventClass!=null&&canHandlerEventClass.length()>0){
                dispatchEvent(getEvent(canHandlerEventClass)) ;            
            }
            else {
                dispatchEvent(getEvent()) ;
            }
        }                
    }
        
    /**
     * 当为true的时候表示如果不能全部处理就扔回事件池中。
     * 当为false的时候表示如果不能处理也扔掉
     */
    public boolean willTurnBack=false ;//是否扔回事件池中?
    
    private Event getEvent(){
        return EventQueue.getInstance().getEvent() ;
    }
    
    private Event getEvent(String evtClass){
        return EventQueue.getInstance().getEvent(evtClass) ;
    }
    
    private void dispatchEvent(Event evt){
        if (null==evt) return ;        
        boolean flag = true ;
        try {
            for (Iterator iter = handlers.iterator(); iter.hasNext(); ) {
                EventHandler element = (EventHandler) iter.next();
                flag = flag && element.handleEvent(evt) ;
            }
            if (flag){
                EventSerialManager.deleteEvent(evt) ;            
            }
            else if (willTurnBack){
                EventQueue.getInstance().putEvent(evt) ;
            }            
            else {
                EventSerialManager.deleteEvent(evt) ;
            }
        } catch (Exception e) {        
            e.printStackTrace();
            EventQueue.getInstance().putEvent(evt) ;
        }
    }
    
    public static void main(String[] args){        
    }
    /**
     * @param o
     * @return
     */
    public boolean add(EventHandler handler) {
        return handlers.add(handler);
    }
    /**
     * @return Returns the canHandlerEventClass.
     */
    public String getCanHandlerEventClass() {
        return this.canHandlerEventClass;
    }
    /**
     * @param canHandlerEventClass The canHandlerEventClass to set.
     */
    public void setCanHandlerEventClass(String canHandlerEventClass) {
        this.canHandlerEventClass = canHandlerEventClass;
    }
    /**
     * @return Returns the willTurnBack.
     */
    public boolean isWillTurnBack() {
        return this.willTurnBack;
    }
    /**
     * @param willTurnBack The willTurnBack to set.
     */
    public void setWillTurnBack(boolean willTurnBack) {
        this.willTurnBack = willTurnBack;
    }
}

⌨️ 快捷键说明

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