java 一个简单的线程池
来源:互联网 发布:mac怎么下载炉石传说 编辑:程序博客网 时间:2024/06/07 12:33
本文给大家介绍一个简单的线程池的实现过程,方便大家对线程池的理解。
ThreadPool类如下:
public class ThreadPool{ static int MAX_THREAD = 1000; static int MIN_THREAD = 14; static int id = 1; //线程 ID 号,主要用于监视线程的工作情况 static private ThreadPool pool = new ThreadPool(); static public ThreadPool getThreadPool() { return pool; } Stack<WorkThread> stack = new Stack<WorkThread>(); 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类为工作线程,代码如下:
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; } } }}
转载自:http://www.strutshome.com/index.php/archives/710
0 0
- 【java】一个简单的线程池
- 一个简单的JAVA线程池实例
- java 一个简单的线程池
- Java实现一个简单的线程池
- 一个简单的java线程池实现
- 一个简单的java线程池
- 一个简单的线程池(仿java的ScheduledFuture)
- 写的一个简单的java线程池
- 一个简单的线程池
- 一个简单的线程池
- 一个简单的线程池
- 一个简单的线程池
- 一个简单的线程池
- 一个简单的线程池
- 一个简单的线程池
- 一个简单的JAVA线程池(只是用实验)
- 一个简单的线程池实现(java版)
- 一个简单的线程池实现(java版)
- setStrokeWidth的详解
- Objective-C与Swift相互调用 学习笔记
- IOCP模型与网络编程
- 面向对象的C语言开发框架:Nesty
- Android ViewPager使用详解
- java 一个简单的线程池
- ThinkPHP3.0 出现“您浏览的页面暂时发生了错误!请稍后再试~”的解决办法
- Android WakeLock
- 聪明的程序员使用50%-70%的时间用来思考
- linux expect自动登录ssh,ftp
- Eclipse运行Android程序报Error generating final archive: Unable to get debug signature key错误解决方法
- DZ论坛常见基本设置问题
- 1、Socket编程(网络协议一)
- Servlet生成验证码