Java游戏起步:(一)线程与线程池

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

任何游戏都至少需要运行两个线程,主线程和GUI线程

而线程池是一个治理运行线程的有用工具,下面的代码示范了一个线程池的实现方法~~

************************************************

(ThreadPool.Java)

import java.util.LinkedList;

/**

线程池是一组线程,限制执行任务的线程数

*/

public class ThreadPool extends ThreadGroup {

private boolean isAlive;

private LinkedList taskQueue;

private int threadID;

private static int threadPoolID;

/**

创建新的线程池,numThreads是池中的线程数

*/

public ThreadPool(int numThreads) {

super("ThreadPool-" + (threadPoolID++));

setDaemon(true);

isAlive = true;

taskQueue = new LinkedList();

for (int i=0; i<numThreads; i++) {

new PooledThread().start();

}

}

/**

请求新任务。人物在池中下一空闲线程中运行,任务按收到的顺序执行

*/

public synchronized void runTask(Runnable task) {

if (!isAlive) {

throw new IllegalStateException();//线程被关则抛出IllegalStateException异常

}

if (task != null) {

taskQueue.add(task);

notify();

}

}

protected synchronized Runnable getTask()

throws InterruptedException

{

while (taskQueue.size() == 0) {

if (!isAlive) {

return null;

}

wait();

}

return (Runnable)taskQueue.removeFirst();

}

/**

关闭线程池,所有线程停止,不再执行任务

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航