一种线程唤醒控制方法和系统技术方案

技术编号:2918377 阅读:305 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种线程唤醒控制方法,包括步骤:线程唤醒运行,检测是否有待处理任务,当检测到有待处理任务时则执行所述待处理任务,处理完所述待处理任务后线程的休眠时间重置为预置的最小单元时间间隔△t,否则;计算最近两次休眠的时间间隔之和△at,置线程休眠的时间间隔为△at。实现了当待执行任务多时,则服务线程休眠时间短,当待执行任务少时,则服务线程休眠时间长的目的,避免了系统资源的浪费,合理的解决了处理任务的效率和系统资源浪费之间的矛盾。

【技术实现步骤摘要】

本专利技术涉及计算机领域,特别是涉及一种线程唤醒控制方法和系统。技术背景线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自 己不拥有系统资源,只拥有部分在运行中必不可少的资源,但它可与同属一个 进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个 线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约, 致使线程在运行中呈现出间断性。线程具有就绪、阻塞和运行三种基本状态。 线程是程序中一个单一的顺序控制流,它很好的解决了紧耦合共享主存的多处 理机体系结构上的并行处理行为。线程休眠是指线程处于不可运行状态,在待 定时间或事件激活后再恢复运行。现有系统触发执行底层服务线程, 一般有两种方式 一种是被动式触发执行外界达到一定条件时,触发执行服务线程,以执 行所需服务。另一种是主动式触发执行,设置固定的时间间隔,每间隔指定的时间后, 都会去触发服务线程,以执行所需服务。上面所述两种触发执行底层服务线程的方式有如下不足对于被动式触发执行每次需要外界达到一定条件,才能触发执行服务线 程,系统无法做到主动的操控,这种方式,只适合于系统完全不需要进行调节, 只进行被动调用的简单场景,在多数复杂业务场景下都不能满足业务的需求。对于设置固定的时间间隔主动式触发执行,系统能在指定时间间隔后主动 的触发服务线程。这种方式系统虽然取得主动,但往往还不够合理,当服务线 程的触发不是很有规律,有某个时间段内需要触发的服务线程特别多,而在某 个时间段内需要触发的服务线程特别少时,采用这种设置固定的时间间隔主动 式触发执行服务线程的方式也不能很好的满足,特别的,在触发服务线程少的 时间段内会造成系统资源的大量浪费。在现实业务场景中,经常随着不同的条 件,在不同时间去触发服务线程。尤其当系统对于性能比较关注,或者服务线程比较耗费资源时,这种固定时间间隔调度服务线程的方式并不合理,浪费了 大量的系统资源。
技术实现思路
本专利技术所要解决的技术问题是提供一种线程唤醒控制的方法和系统,对服 务线程以科学的方式主动进行触发、休眠,从而合理的^f吏用系统资源,避免不 必要的系统资源的耗费。为了解决上述问题,本专利技术公开了一种线程唤醒控制方法,包括 根据待执行任务的频率动态预置唤醒线程的时间间隔; 线程唤醒运行; 检测是否有待处理任务;当检测到有待处理任务时则执行所述待处理任务,处理完毕后进入下一 步;当检测到没有待处理任务时则直接进入下 一步;置线程的休眠时间为所述动态预置的唤醒线程的时间间隔。 优选的,所述动态预置唤醒线程的时间间隔为任意时间间隔。 优选的,所述动态预置唤醒线程的时间间隔为固定时间间隔的倍数。 本专利技术还公开了另一种线程唤醒控制方法,包括 线程唤醒运行; 检测是否有待处理任务;当检测到有待处理任务时则执行所述待处理任务,处理完所述待处理任务 后线程的休眠时间重置为预置的最小单元时间间隔At,否则;计算最近两次休眠的时间间隔之和Aat,置线程休眠的时间间隔为Aat。其中,当线程第一次休眠时,所述最近两次休眠的时间间隔之和Aat为预 置的最小单元时间间隔At。当线程第二次休眠时,所述最近两次休眠的时间间隔都为预置的最小单元 时间间隔At,所述最近两次休眠的时间间隔之和Aat为2At。优选的,还包括预置最大时间间隔AT,当最近两次休眠的时间间隔之和Aat超出所述预 设的最大时间间隔AT时,则所述线程的休眠时间重置为预置的最小单元时间 间隔At。本专利技术还公开了一种线程唤醒控制系统,包括 线程唤醒单元,用于线程唤醒运4亍; 任务检测单元,用于检测是否有待处理任务; 任务处理单元,用于完成待处理^f壬务的处理; 休眠时间动态重置单元,用于动态重置线程的休眠时间。 本专利技术还公开了另 一种线程唤醒控制系统,包括 线程唤醒单元,用于线程唤醒运行; 任务检测单元,用于检测是否有待处理任务; 任务处理单元,用于完成待处理任务的处理;休眠时间重置单元,当检测单元检测到有待处理任务时则在处理单元处理 完所述待处理任务后重置线程的休眠时间为预置的最小单元时间间隔At,否 则;置线程〗木眠的时间间隔为最近两次休眠的时间间隔之和Aat。 优选的,所述系统还包括判断单元,用于判断最近两次休眠的时间间隔之和Aat是否超出预设的最 大时间间隔AT。与现有技术相比,本专利技术具有以下优点本专利技术所述方案采用主动式触发执行服务线程,根据待执行任务的频率动 态预置唤醒线程的时间间隔,服务线程根据执行任务的频率间隔一定的时间间 隔后执行任务,执行后空闲时服务线程进行休眠,从而降低对系统资源的耗费。本专利技术所述的休眠时间间隔并非固定,而是根据待执行任务的频率使用动 态加权设置时间间隔,动态地让线程进行合理的休眠和唤醒,从而使服务线程 的每次休眠时间动态变化,更合理地使用系统资源,降低对系统资源的耗费进一步,本专利技术的服务线程检测到没有待执行任务后,而使服务线程的休 眠间隔具有记忆功能。即检测到有待处理任务后,处理完待执行任务后,线程 的休眠时间重置为最小单元时间间隔,当检测到没有待执行任务后,每次的休 眠时间间隔是最近两次休眠间隔时间之和,实现了当待执行任务多时,则服务 线程休眠时间短,当待执行任务少时,则服务线程休眠时间长的目的,避免了 系统资源的浪费,合理的解决了处理任务的效率和系统资源浪费之间的矛盾。附图说明图1是本专利技术一种线程唤醒控制方法第一实施例的流程图; 图2是本专利技术 一种线程唤醒控制方法第二实施例的流程图; 图3是图2所示本专利技术一种线程唤醒控制方法第二实施例的流程图的具体 示意图;图4是本专利技术一种线程唤醒控制方法第三实施例的流程图; 图5是图4所示本专利技术一种线程唤醒控制方法第三实施例的流程图的具体 示意图;图6是本专利技术一种线程唤醒控制系统第一实施例的结构框图; 图7是本专利技术一种线程唤醒控制系统第二实施例的结构框图; 图8是本专利技术一种线程唤醒控制系统第三实施例的结构框图。具体实施方式本专利技术所述方案的应用环境,可以是在Java中间件应用服务器中,也可 以是在其他的应用服务器环境中,如web服务器。总之,在需要调用服务线 程的场景中都可以应用本专利技术所述的技术方案,本专利技术不限定所述技术方案的 应用环境。本专利技术所述的服务线程可以是消息发送、邮件发送、动态处理上交文档或 者其他的服务线程,对一些底层服务线程,不管是web服务器还是中间件应 用服务器以及其他类型的服务器中的服务线程,如果满足以下条件,本专利技术所 述技术方案都可以优选适用1、 执行时会比较消耗系统资源,需要合理地唤醒/休眠线程,以节省系统 资源。否则,如果执行时不耗费系统资源,则不断地循环执行时也不会耗费太 多的系统资源;2、 任务处理并不需要同步执行,但有一定的效率要求。消息发送、邮件发送这类服务,既不要求如电话通信那样的同步执行(发 送/接收双方都必须同步才能进行),但又要求在一定的时间内完成,并且比较 耗费系统资源,因此都可以优选应用本专利技术所述的技术方案。当然,本专利技术并 不对所述技术方案的应用场景进行限定,可以得知,在其他的场景中应用本发 明所述技术方案也是落入本专利技术的保护范围之内的。 为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术本文档来自技高网
...

【技术保护点】
一种线程唤醒控制方法,其特征在于,包括:根据待执行任务的频率动态预置唤醒线程的时间间隔;线程唤醒运行;检测是否有待处理任务;当检测到有待处理任务时则执行所述待处理任务,处理完毕后进入下一步;当检测到没有待处理 任务时则直接进入下一步;置线程的休眠时间为所述动态预置的唤醒线程的时间间隔。

【技术特征摘要】

【专利技术属性】
技术研发人员:钟发然
申请(专利权)人:金蝶软件中国有限公司
类型:发明
国别省市:94[中国|深圳]

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

1