网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.关于Java编程语言中的return语句.
.Java模式设计之单例模式(二).
.Java中关于XML的API惊鸿一瞥.
.Java中运行其它程序方法的实例详.
.Java Applet编程入门之一.
.对《Java与模式》中工厂方法模式.
.使用 EJB 提供程序.
.Hibernate源码浅析.
.用JAVA程序取得IP地址.
.JScript 的变量.
.EJB 3.0开发指南之消息驱动Bean.
.简单介绍javabean 和 ejb 的区别.
.JavaSocket编程(四)重复和并发.
.JBuilder class文件的 .
.Hibernate的JNDI绑定分析.
.开发不再是苦差事 用Eclipse简化.
.Java Socket编程(五) 简单的WE.
.Java性能的优化(上).
.配置shark与mysql的连接.
.什么是 Enterprise JavaBeans 组.

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

发表日期:2008-1-5


任何游戏都至少需要运行两个线程,主线程和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();
    }


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

上一篇:应用OSCache提升J2EE系统运行性能 人气:880
下一篇:Apache Tomcat 5.0.2x 的虚拟目录配置 人气:849
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐