下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 5/5Java线程池实现例子 这是我从网上裆下来的一个线程池例子,因为是菜鸟,也是看了有一会儿才看懂了,希望能帮到其他的菜鸟们; 说下实现思路: PoolManager:创建了一个ArrayList用来存放实例化好的线程对象:一个线程可以帮助一个任务去执行:工厂 Worker:也就是工人的意思:就是实例化好的线程,放到了线程池工厂里,有一批新货(任务)就找一个空闲的线程(工人)去做这件事:工厂里的工人 TaskManager:任务(新货)需要放到一个临时的仓库:这个类就是这个仓库:接到任务的工人从这个仓库里拿需要执行的任务:需要干的活的仓库 TaskNibutirThread:哪件事情由那个
2、人去做,仓库里有没有货,工厂里有没有闲着的工人,都是这个类负责的:负责分配任务的主管 WorkTask:任务的接口其他的是它的实现类,用来放到仓库里执行的 package com.threadpool; import java.util.ArrayList; /* * 线程池管理器(PoolManager):用于创建并管理线程池,采用单例模式 * */ public class PoolManager public static PoolManager mPool=new PoolManager(); public final int max_pool =3; public final int
3、 max_Tasks = 15; public static ArrayList init_pools; / private int GetIdleThreadPollTime=50;/获取空闲线程轮询间隔时间,可配置 private TaskMonitorThread mainThread;/任务监测线程 static init_pools = new ArrayList(5); public static PoolManager getInstance() if (mPool = null) mPool = new PoolManager(); return mPool; /获取空闲线程
4、public Worker getIdleThread() Worker working =null; while(true) synchronized(init_pools) for (int i = 0; i workqueue =new LinkedList();/ 缓冲队列 /* * 向工作队列中加入一个任务,由工作线程去执行该任务 * * param task */ public synchronized static void addTask(WorkTask worktask) if (worktask != null /*com.yulin.threadpool.WorkTas
5、kImp44f4ac30, com.yulin.threadpool.WorkTaskImp44f4ad60, com.yulin.threadpool.WorkTaskImp44f4ae00, com.yulin.threadpool.WorkTaskImp44f4aea0, com.yulin.threadpool.WorkTaskImp44f4af40*/ /* * 从工作队列中取出一个任务 * * return * throws InterruptedException */ public synchronized static WorkTask getTask() throws In
6、terruptedException while (workqueue.size() 0) return (WorkTask) workqueue.removeFirst(); return null; package com.threadpool; public final class TaskMonitorThread extends Thread /private PoolManage threadPool; private int GetWorkTaskPollTime = 10;/ 监测任务轮询时间,可配置 /*public TaskMonitorThread(PoolManage
7、pool) System.out.println(正在创建任务监测线程.); this.threadPool = pool; */ public TaskMonitorThread() System.out.println(正在创建任务监测线程.); Override public void run() / TODO Auto-generated method stub while (true) try WorkTask task = TaskManager.getTask(); if (task = null) try Thread.sleep(5000); catch (Interrupt
8、edException e) / TODO Auto-generated catch block e.printStackTrace(); else Worker t = PoolManager.getInstance().getIdleThread();/ 获取空闲线程 System.out.println(Worker.toString()=?+t.toString(); if (t = null) break; t.setWorkTask(task);/ 设置线程任务 System.out.println(task.toString()=?+task.toString(); t.setI
9、sRunning(true);/激活空闲线程 System.out.println(Worker.toString()=?+t.getIsrunning( ); / try /Thread.sleep(GetWorkTaskPollTime); / catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace(); package com.threadpool; /* * 线程池测试类,测试功能如下: * 1、测试线程池创建功能 * 2、测试处理并发请求功能 * 3、测试关闭功能 */ pu
10、blic class TestThreadPool public static void main(String args) /创建线程池,开启处理请求服务 PoolManager pool=PoolManager.getInstance(); pool.init(); /接收客户端请求 WorkTask task1=new WorkTaskAImp(执行超时任务1.); TaskManager.addTask(task1); final int requestCount=15; for(int i=0;iTask1, this.param); System.out.println(=Task
11、1+this.param); Override public void cancelTask() / TODO Auto-generated method stub Override public int getProgress() / TODO Auto-generated method stub return 0; package com.threadpool; /* * 任务类1 * 正常执行的工作任务 */ public class WorkTaskImp implements WorkTask protected String param; public WorkTaskImp() public WorkTaskImp(String param) this.param=param; Override public void runTask() / TODO Auto-generated method stub Syst
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024学校心理健康教育工作总结
- 肠鼠疫的护理查房
- 监理施工合同标准文本
- 注会《经济法》2013年真题卷
- 反商业贿赂协议(范本)
- N1N4护士岗位职责、任职资格、培训及考核指导原则
- 公司与学校合作协议书:校园企业招聘会
- 防震减灾携手同行主题活动方案2篇
- 江西省吉安市灌溪中学高一英语下学期摸底试题含解析
- 河南省安阳市林州第二中学高一英语模拟试卷含解析
- 铁路工程危害因素辨识评价表及高中度风险清单(常用版)
- IMT-通信行业:面向通感算一体化光网络的光纤传感技术白皮书
- 某大学智慧教室建设实施方案
- 动物防疫服务投标方案
- 全国职业院校技能大赛(法律事务赛项)备考试题库(含答案)
- 英文介绍-我的家乡课件
- 社会工作综合能力初级教学课件
- 山东省威海市荣成第三中学2022-2023学年高一生物下学期期末试题含解析
- 消化内镜室应急预案汇编
- 高二数学学业水平模拟考试的总结与反思
- 棒条给料机安全生产操作规程
评论
0/150
提交评论