自己的线程池

来源:互联网 发布:转换图片格式的软件 编辑:程序博客网 时间:2024/05/21 16:52

线程池我们都听说过,但它具体是如何工作的好像并不清楚。且看下面的分析。

当一个任务可由4个线程完成时,如果再生成更多的线程则会降低cpu利用率,那么我们只用这四个线程就行了。 但一个线程当它的任务完成时,它就会die,这样我们就不能再利用了。我们有方法让它不die,并把这4个线程放到一个数组(其它数据结构也行)中来循环利用它们,这个数组就是一个 thread pool 了! 真正实现时还要结合这个任务(task)本身以及线程间的通信。 下面是一个例子,代码比较难,慢慢研究。

 

假设我们想压缩一个目录下所有文件,我们想用几个线程来完成这个任务,每个线程压缩一个文件,当完成压缩后它再去拿一个文件来压缩。首先来看这个线程类:

 

 

主线程类:

 

 

这个文章主要是自己看,不太懂其它同行,原文在“Java Network Programming 3rd” 第五章 Threads 中的 5.6 Thread pools.

 

原创粉丝点击