了解并实现线程池模型的构建
2014-03-24 14:21
288 查看
软件在运行时,启动和销毁一条线程都需要消耗计算机的资源,所以我们需要尽量的减少计算机的消耗,并且能达到我们软件运行的最佳效率
就好像一个工厂,每个工人我们都认为他是一条线程,如果需要他工作,我们就叫他过来,如果不需要工作,我们是让他在这等,还是让他回家呢?
如果是平时多线程的操作方式,我们就是让他回家等,这样的话,当有新任务需要人工作的时候,叫他过来,中间多了一套流程,如果让他在这等呢,我们需要他工作了,那我们就可以直接把工作交给他,中间可以节约电话费的成本(当然了只是打个比如),工作量大时,我们可以多叫几个工人,当长时间不需要工作的时候呢, 我们就可以叫一些工人回家,只需要留下少量的工人等待.
线程池就是这个处理的过程,一个完整的线程池必须存在以下几个功能:
1: 管理线程池各项任务的线程;创建和管理线程池,包括各项参数,当闲置的(等待的线程)太多的时候,销毁一部分线程以便计算机有更多的资源提供给其他软件或线程(只留下线程池容量的最小值线程数量).当需要处理的工作较多时,创建更多的线程来处理(达到线程池容量的最大值),并且可以记录当前正在处理,等待处理等各项数据;
2:工作线程;用以处理任务;
3:提交任务的接口;用以提交给线程池,激活闲置的线程;
4:任务队列;用以存放没有处理的任务,提供一种缓存机制;
那么针对线程池模型的以上这些特性,我们知道哪些适合用线程池来处理了
1:需要大量的线程来处理的任务,而且完成任务的流程类似,时间较短,频繁的使用。比如:批量登录一个网站,当有大批帐号需要登录时,我们就可以使用线程池技术,因为他登录的流程是一样的,而任务的数量无疑是巨大的,所以线程池能更灵活的来调配和处理这些任务.
2:对性能要求严格的软件,比如要求网站快速响应我们的请求返回数据
3: 需要承接大量的请求,当一次性接收到大量的任务请求,计算机的资源是有限的,如果是创建大量的线程,势必会造成线程数量超出系统默认的极限,软件将出现资源枯竭的错误(计算机无法为软件提供资源的情况)虽然在理论上来说,计算机的资源是很大的,但是短时间创建大量的线程,还是会让计算机无法为你的软件提供支持(资源)
【转载自:iHk-system.com|寻访诸神的网站】
就好像一个工厂,每个工人我们都认为他是一条线程,如果需要他工作,我们就叫他过来,如果不需要工作,我们是让他在这等,还是让他回家呢?
如果是平时多线程的操作方式,我们就是让他回家等,这样的话,当有新任务需要人工作的时候,叫他过来,中间多了一套流程,如果让他在这等呢,我们需要他工作了,那我们就可以直接把工作交给他,中间可以节约电话费的成本(当然了只是打个比如),工作量大时,我们可以多叫几个工人,当长时间不需要工作的时候呢, 我们就可以叫一些工人回家,只需要留下少量的工人等待.
线程池就是这个处理的过程,一个完整的线程池必须存在以下几个功能:
1: 管理线程池各项任务的线程;创建和管理线程池,包括各项参数,当闲置的(等待的线程)太多的时候,销毁一部分线程以便计算机有更多的资源提供给其他软件或线程(只留下线程池容量的最小值线程数量).当需要处理的工作较多时,创建更多的线程来处理(达到线程池容量的最大值),并且可以记录当前正在处理,等待处理等各项数据;
2:工作线程;用以处理任务;
3:提交任务的接口;用以提交给线程池,激活闲置的线程;
4:任务队列;用以存放没有处理的任务,提供一种缓存机制;
那么针对线程池模型的以上这些特性,我们知道哪些适合用线程池来处理了
1:需要大量的线程来处理的任务,而且完成任务的流程类似,时间较短,频繁的使用。比如:批量登录一个网站,当有大批帐号需要登录时,我们就可以使用线程池技术,因为他登录的流程是一样的,而任务的数量无疑是巨大的,所以线程池能更灵活的来调配和处理这些任务.
2:对性能要求严格的软件,比如要求网站快速响应我们的请求返回数据
3: 需要承接大量的请求,当一次性接收到大量的任务请求,计算机的资源是有限的,如果是创建大量的线程,势必会造成线程数量超出系统默认的极限,软件将出现资源枯竭的错误(计算机无法为软件提供资源的情况)虽然在理论上来说,计算机的资源是很大的,但是短时间创建大量的线程,还是会让计算机无法为你的软件提供支持(资源)
【转载自:iHk-system.com|寻访诸神的网站】
相关文章推荐
- 教你构建iSCSI服务器实现SAN存储模型
- Dubbo源代码实现六:线程池模型与提供者
- Dubbo源代码实现六:线程池模型与提供者
- Dubbo源代码实现六:线程池模型与提供者
- Dubbo源代码实现六:线程池模型与提供者
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【四】——实现模型工厂,依赖注入以及格式配置
- Dubbo源代码实现六:线程池模型与提供者
- 线程池 队列生产者消费者模型实现
- Dubbo源代码实现六:线程池模型与提供者
- 利用线程池实现多客户端和单服务器端Socket通讯(二):异步编程模型实现
- Dubbo源代码实现六:线程池模型与提供者
- Dubbo源代码实现六:线程池模型与提供者
- Dubbo源代码实现六:线程池模型与提供者
- 浅谈服务器单I/O线程+工作者线程池模型架构及实现要点
- 基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)
- Dubbo源代码实现六:线程池模型与提供者
- 对plist构建数据模型,完成封装实现数据分离
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记10——三维天空的构建&三维粒子的实现&多游戏模型的载入
- 基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)
- Dubbo源代码实现六:线程池模型与提供者