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

📄 wrap.java

📁 一个MMORPG手机游戏的服务器端程序源代码
💻 JAVA
字号:
package zsw_mmorpg.common;import org.apache.log4j.Logger;/** * Wrap.java *  * Wrap is a thread pool with an incoming BlockingQueue * of GameEvents * * @author <a href="mailto:shiwei@raymobile.com">朱世伟</a> * @version 1.0 */public abstract class Wrap implements Runnable, EventHandler {    protected Logger log;    /** milliseconds to sleep between processing runs */    protected static final long WORKER_SLEEP_MILLIS = 10;    protected EventQueue eventQueue;    protected boolean running = false;    private Thread workers[];    private int spareCount;    private Object countLock = new Object();    private String shortname;    /**     * @param numWorkers number of worker threads to spawn     */    public final void initWrap(int numWorkers) {	// setup the log4j Logger	shortname = this.getClass().getName().substring(this.getClass().getName().lastIndexOf(".") + 1);	log = Logger.getLogger(shortname);	log.info("initWrap - " + shortname);	eventQueue = new EventQueue(shortname + "-in");	// spawn worker threads	workers = new Thread[numWorkers];	for (int i=0; i<numWorkers; i++) {	    workers[i] = new Thread(this, shortname + "-" + (i+1));	    workers[i].setDaemon(true);	    workers[i].start();	}    }    public void shutdown () {	running = false;	if (workers != null) {	    for (int i=0;i<workers.length;i++) {		workers[i].interrupt();	    }	}    }    /**     * 事件入栈     */    public void handleEvent(GameEvent event) {	eventQueue.enQueue(event);    }    /**      * 处理事件的机制     */    public void run() {	GameEvent event;	running = true;	while (running) {        try {		if ((event = eventQueue.deQueue()) != null) {		    processEvent(event);		}	    }	    catch (InterruptedException e) {	    }	}    }    protected abstract void processEvent(GameEvent event);    /**保存所有玩家信息*/}

⌨️ 快捷键说明

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