📄 wrap.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 + -