WEB开发网
开发学院WEB开发Jsp Java游戏起步:(一)线程与线程池 阅读

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

 2008-01-05 19:30:25 来源:WEB开发网   
核心提示:任何游戏都至少需要运行两个线程,主线程和GUI线程而线程池是一个治理运行线程的有用工具,下面的代码示范了一个线程池的实现方法~~(ThreadPool.java)import java.util.LinkedList;/** 线程池是一组线程,限制执行任务的线程数*/public class ThreadPool e

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


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

Tags:Java 游戏 起步

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接