线程池 线程是一种比较昂贵的资源。有些系统为了重用线程,引入了线程池的机制。 线程池的工作原理如下: 首先,系统会启动一定数量的线程。这些线程就构成了一个线程池。 当有任务要做的时候,系统就从线程池里面选一个空闲的线程。然后把这个线程标记为“正在运行”。然后把任务传给这个线程执行。线程执行任务完成之后,就把自己标记为“空闲”。 这个过程并不难以理解。难以理解的是,一般来说,线程执行完成之后,运行栈等系统资源就会释放,线程对象就被回收了。一个已经完成的线程,又如何能回到线程池的空闲线程队列中呢? 秘诀就在于,线程池里面的线程永远不会执行完成。线程池里面的线程,都是一个无穷循环。具体代码如下: Thread pooledThread { … theTask …. // theTask成员变量,表示要执行的任务 … run() { while( true ) { // 永不停止的循环 signal.wait(); // 等待系统的通知 theTask.run(); // 执行任务 } } } 系统只需要调用 signal.notify() 就可以启动一个空闲线程。