wrap.java
来自「一个MMORPG手机游戏的服务器端程序源代码」· Java 代码 · 共 82 行
JAVA
82 行
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 + =
减小字号Ctrl + -
显示快捷键?