知识大全 一个非常简单和短小的线程池
Posted 知
篇首语:一个有信念者所开发出的力量,大于个只有兴趣者。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 一个非常简单和短小的线程池相关的知识,希望对你有一定的参考价值。
最近写了一个 HTTP 代理服务器 发现访问网页时建立的连接很多 消耗的线程也非常的多 对于系统是一个不小的开销 而且这些线程存在的时间都很短 %以上的线程存在的时间都在毫秒的等级 相对来说线程的建立的注销就占了绝大部分的CPU时间一个很小的线程池 代码如下(一共 个类): /* *一个简单的线程池 ThreadPool java */ public class ThreadPool //以下是配置信息 可以更改 static int MAX_THREAD = ; //未使用 static int MIN_THREAD = ; static int id = ; //线程 ID 号 主要用于监视线程的工作情况 static private ThreadPool pool = new ThreadPool(); static public ThreadPool getThreadPool() return pool; Stack<WorkThread> stack = new Stack<WorkThread>(MIN_THREAD); private ThreadPool() synchronized public boolean putWorkThread(WorkThread wt) if(stack size()<MIN_THREAD) stack push(wt); return true; else return false; synchronized public WorkThread getWorkThread() WorkThread wt = null; if(stack isEmpty()) wt = new WorkThread(this); new Thread(wt 线程ID: +id) start(); id++; else wt = stack pop(); return wt; /* *工作线程类 WorkThread java */ public class WorkThread implements Runnable Object lock = new Object(); Runnable runner = null; ThreadPool pool = null; public WorkThread(ThreadPool pool) this pool = pool; public void start(Runnable r) runner = r; synchronized(lock) lock notify(); public void run() while(true) if(runner != null) runner run(); runner = null; //及时回收资源 if(pool putWorkThread(this)) System out println (Thread currentThread() getName()+ 被回收! ); synchronized(lock) try lock wait(); catch (InterruptedException ie) System out println ( 停止线程时出现异常 ); else System out println (Thread currentThread() getName()+ 被丢弃! ); break;
使用方法: Runnable r = ; new Thread(r) start(); 这是你以前的代码 使用线程池只需要将后一句变成 ThreadPool getThreadPool() getWorkThread() start(r); 就可以了 其他的代码不用任何更改
cha138/Article/program/Java/gj/201311/27725相关参考
在现代的操作系统中有一个很重要的概念――线程几乎所有目前流行的操作系统都支持线程线程来源于操作系统中进程的概念进程有自己的虚拟地址空间以及正文段数据段及堆栈而且各自占有不同的系统资源(例如文件环境
构建一个新的线程的代价还是有些高的因为它涉及与操作系统的交互如果你的程序创建了大量生存期很短的线程那就应该使用线程池一个线程池包含大量准备运行的空闲线程你将一个Ru
Java代码构建一个线程池 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本示例程序由三个类构成
JAVA一个简单的两个线程例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 于Java好的方面
Java线程:新特征-线程池 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java实现通用线程池 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 线程池通俗的描述就是预先创
为创建一个线程最简单的方法就是从Thread类继承这个类包含了创建和运行线程所需的一切东西Thread最重要的方法是run()但为了使用run()必须对其进行过载或者覆蓋使其能充分按自己的吩咐
Java线程池如何体现自己的用途 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java线程池就
尽管面临很多挑战多线程有一些优点使得它一直被使用这些优点是 ●资源利用率更好 ●程序设计在某些情况下更简单 ●程序响应更快 资源利用率更好 想象一下一个应用程序需要从本地文件系统中读取和
JAVA线程池使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! packagetendernm