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

📄 wrap.java

📁 利用java实现的多人游戏的服务器系统
💻 JAVA
字号:
package com.hypefiend.javagamebook.common;import org.apache.log4j.Logger;/** * Wrap.java *  * Wrap is a thread pool with an incoming BlockingQueue * of GameEvents * * @author <a href="mailto:bret@hypefiend.com">bret barker</a> * @version 1.0 */public abstract class Wrap implements Runnable, EventHandler {    /** log4j logger */    protected Logger log;    /** milliseconds to sleep between processing runs */    protected static final long WORKER_SLEEP_MILLIS = 10;    /** incoming event queue */    protected EventQueue eventQueue;    /** are we running? **/    protected boolean running = false;    /** our pool of worker threads */    private Thread workers[];    /** number of idle workers */    private int spareCount;    private Object countLock = new Object();    /** short Class name of the implementing class */    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();	}    }    /**     * shutdown the worker threads     */    public void shutdown () {	running = false;	if (workers != null) {	    for (int i=0;i<workers.length;i++) {		workers[i].interrupt();	    }	}    }        /**     * queue the event for later processing by worker threads     */    public void handleEvent(GameEvent event) {	eventQueue.enQueue(event);    }    /**      * retrieve events from the queue and process.     */    public void run() {	GameEvent event;	running = true;	while (running) {	    try {		if ((event = eventQueue.deQueue()) != null) {		    processEvent(event);		}	    }	    catch (InterruptedException e) {	    }	}    }    /**     * subclasses must implement to do their processing     */    protected abstract void processEvent(GameEvent event);}

⌨️ 快捷键说明

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