一种线程池的管理方法和管理系统技术方案

技术编号:9967419 阅读:100 留言:0更新日期:2014-04-25 07:38
本发明专利技术公开了一种线程池的管理方法和管理系统,管理系统包括工作线程创建单元、检测线程创建单元、工作线程调用单元、心跳信号检测单元和假死线程处理单元,管理方法包括:创建工作线程,将工作线程送入线程池队列;创建检测线程;调用线程池队列中的工作线程执行任务;通过检测线程检测在心跳周期内是否接收到各工作线程的心跳信号;通过检测线程将在所述心跳周期内未接收到心跳信号的工作线程设置为假死状态,释放其所有资源,并通过用户接口通知用户出错位置。通过线程池来管理其中的工作线程,不依赖于操作系统托管,能够及时准确地检测出假死的线程,进而找到假死线程执行任务的程序中出错的位置并通知用户。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了一种线程池的管理方法和管理系统,管理系统包括工作线程创建单元、检测线程创建单元、工作线程调用单元、心跳信号检测单元和假死线程处理单元,管理方法包括:创建工作线程,将工作线程送入线程池队列;创建检测线程;调用线程池队列中的工作线程执行任务;通过检测线程检测在心跳周期内是否接收到各工作线程的心跳信号;通过检测线程将在所述心跳周期内未接收到心跳信号的工作线程设置为假死状态,释放其所有资源,并通过用户接口通知用户出错位置。通过线程池来管理其中的工作线程,不依赖于操作系统托管,能够及时准确地检测出假死的线程,进而找到假死线程执行任务的程序中出错的位置并通知用户。【专利说明】一种线程池的管理方法和管理系统
本专利技术涉及线程池技术,更具体地说,涉及一种线程池的管理方法和管理系统。
技术介绍
在基于面向对象编程的应用中,由于创建一个对象要获取内存资源或者其它更多中资源,因此创建和销毁对象要花费很多时间。以基于Java编程技术的应用为例,JVM(Java虚拟机)将试图跟踪每一个对象,以便能够在对象销毁后进行系统资源回收。另外,除了创建和销毁线程的开销之外,活动的线程也需要耗费系统资源。如果短时间内产生大量线程,可能会导致系统由于过度消耗内存或者切换过度而资源不足。为了防止资源不足,服务器应用程序需要一些办法来限制任何给定时刻处理的请求数目,并尽可能减少创建和销毁线程的数量,特别是针对一些资源耗费比较大的线程的创建和销毁,因此“线程池”技术就应运而生。线程池是一种多线程处理形式,目前.net平台和Java平台等都封装了由操作系统托管的线程池接口,如图1所示,在现有的线程池的管理技术中,多个任务被添加到任务队列110中,操作系统从线程池中提取空闲线程来处理任务,如果线程池中没有空闲的线程,操作系统将扩大线程池容量,创建临时的线程来处理任务,在工作线程处理完任务后,将被重置为空闲状态,重新回到线程队列中等待任务请求。现有的线程池的管理技术存在以下缺陷:只有当所有工作线程处理完任务退出之后才能够退出进程的主线程,否则会产生内存泄露或者直接无法退出,造成卡死现象;需要用户自行控制线程的生命周期;无法及时准确地检测出假死的线程,假死的线程需要用户自行进行判断;依赖于平台对线程池的创建以及工作线程的分配,在不同的平台下需要调用适应于该平台下的线程池接口才能实现线程调度。
技术实现思路
本专利技术针对现有的线程池的管理技术中,在不同的平台下需要调动适应于该平台下的线程池接口才能实现线程的调度的缺陷,无法及时准确地检测出假死的线程,假死的线程需要用户自行进行判断的缺陷,提供一种线程池的管理方法和管理系统,提供适应于各种平台的统一线程池接口,能够及时准确地判断出假死的线程,并通知用户相应的出错位置。本专利技术解决其技术问题采样的技术方案是:提供一种线程池的管理方法,包括以下步骤:S1、创建工作线程,将工作线程送入线程池队列;S2、创建检测线程;S3、调用所述线程池队列中的工作线程执行任务;S4、通过检测线程检测在心跳周期内是否接收到各工作线程的心跳信号;S5、通过检测线程将在所述心跳周期内未接收到心跳信号的工作线程设置为假死状态,释放其所有资源,并通过用户接口通知用户出错位置。优选地,步骤SI包括以下子步骤:S11、设置线程池的数据结构参数,所述数据结构参数包括最小工作线程数和已分配线程表;S12、基于所述最小工作线程量创建工作线程,工作线程的属性包括活动状态和运行状态,并将工作线程的活动状态设置为挂起状态、运行状态设置为空闲状态;S13、将工作线程送入线程池队列。优选地,步骤S3包括以下子步骤:S31、当有任务到达时,调用所述线程池队列中的工作线程,并将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务;S32、将活动状态设置为激活状态、运行状态设置为工作状态的工作线程记入所述已分配线程表。优选地,子步骤S31包括以下次级子步骤:S311、当有任务到达时,判断所述线程池队列中是否存在活动状态设置为挂起状态、运行状态设置为空闲状态的工作线程,若是则执行次级子步骤S312,若否执行次级子步骤 S313 ;S312、将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务,执行子步骤S32 ;S313、创建临时的工作线程,并将临时的工作线程送入所述线程池队列,执行次级子步骤S312。优选地,所述数据结构参数还包括最大工作线程数,在次级子步骤S313中,判断当前工作线程数是否大于或者等于所述最大工作线程数,若否则创建临时的工作线程,并将临时的工作线程送入所述线程池队列,执行次级子步骤S312。优选地,步骤S5包括以下子步骤:S51、检测线程将在所述心跳周期内未接收到心跳信号的工作线程的运行状态设置为假死状态,从所述已分配线程表中将处于假死状态的工作线程移除,并释放处于假死状态的工作线程的所有资源;S52、通过用户接口通知用户出错位置。提供一种线程池的管理系统,包括:工作线程创建单元,用于创建工作线程,并将工作线程送入线程池队列;检测线程创建单元,用于创建检测线程;工作线程调用单元,用于调用所述线程池队列中的工作线程执行任务;心跳信号检测单元,用于通过检测线程检测在心跳周期内是否接收到各工作线程的心跳信号;假死线程处理单元,用于通过检测线程将在所述心跳周期内未接收到心跳信号的工作线程设置为假死状态,释放其所有资源,并通过用户接口通知用户出错位置。优选地,所述工作线程创建单元包括:线程池参数设置模块,用于设置线程池的数据结构参数,所述数据结构参数包括最小工作线程量和已分配线程表;工作线程创建模块,用于基于所述最小工作线程量创建工作线程,工作线程的属性包括活动状态和运行状态,并将工作线程的活动状态设置为挂起状态、运行状态设置为空闲状态;分配模块,用于将工作线程送入线程池队列。优选地,所述工作线程调用单元包括:工作线程调用模块,用于在任务到达时,调用所述线程池队列中的工作线程,并将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务;记录模块,用于将活动状态设置为激活状态、运行状态设置为工作状态的工作线程记入所述已分配线程表。优选地,所述工作线程调用模块包括:判断子模块,用于在任务到达时,判断所述线程池队列中是否存在活动状态设置为挂起状态、运行状态设置为空闲状态的工作线程;工作线程状态设置子模块,用于将工作线程的活动状态设置为激活状态,运行状态设置为工作状态,以使工作线程执行任务;临时工作线程创建子模块,用于在所述线程池队列中不存在活动状态设置为挂起状态、运行状态设置为空闲状态的工作线程时,创建临时的工作线程,并将临时的工作线程送入所述线程池队列。本专利技术的线程池的管理方法和管理系统具有以下有益效果:通过线程池来管理其中的工作线程,不依赖于操作系统托管,因此,在各种平台下,只要调用本专利技术的线程池的统一接口,就可以实现线程的调用。更进一步,通过创建检测线程来检测执行任务的工作线程是否发生假死,使能够及时准确地检测出假死的线程,进而找到假死线程执行任务的程序中出错的位置并通知用户,使用户能够及时了解并进行相应的补救或者预警。【专利附图】【附图说明本文档来自技高网
...

【技术保护点】
一种线程池的管理方法,其特征在于,包括以下步骤:S1、创建工作线程,将工作线程送入线程池队列;S2、创建检测线程;S3、调用所述线程池队列中的工作线程执行任务;S4、通过检测线程检测在心跳周期内是否接收到各工作线程的心跳信号;S5、通过检测线程将在所述心跳周期内未接收到心跳信号的工作线程设置为假死状态,释放其所有资源,并通过用户接口通知用户出错位置。

【技术特征摘要】

【专利技术属性】
技术研发人员:肖洪锦
申请(专利权)人:深圳联友科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1