令java线程池优先于队列使用最大线程数的方法及其应用技术

技术编号:36855326 阅读:12 留言:0更新日期:2023-03-15 17:41
本发明专利技术属于java技术领域,具体涉及一种令java线程池优先于队列使用最大线程数的方法,包括重写工作队列、自定义拒绝策略和自定义线程池;具体涉及一种令java线程池优先于队列使用最大线程数的系统,包括如下模块:重写工作队列模块;自定义拒绝策略模块;自定义线程池模块。本发明专利技术改变java线程池的默认工作行为,减少工作队列堆积,提升任务的处理速度。充分利用计算机资源缓解系统的压力,使系统更加稳定、高效。打破了不同介质需要不同存储系统的壁垒,通过一套存储引擎将整个系统进行整合,真正实现数据的统一管理和调度。优先使用最大线程数量,最大限度的使用计算机资源来缓解任务的处理压力,提高使用需求,避免资源和时间的浪费。的浪费。的浪费。

【技术实现步骤摘要】
令java线程池优先于队列使用最大线程数的方法及其应用


[0001]本专利技术属于java
,具体涉及一种令java线程池优先于队列使用最大线程数的方法及其应用。

技术介绍

[0002]目前,线程池是java开发中的一种常用组件,ThreadPoolExecutor是其核心实现。ThreadPoolExecutor有如下几个核心参数:核心线程数、最大线程数、任务队列、线程工厂、拒绝策略。Java线程池的默认工作行为如下:
[0003]有任务来了才创建工作线程;当核心线程满了之后不会立即扩容线程池,而是把任务堆积到工作队列中;当工作队列满了后扩容线程池,一直到线程个数达到最大线程数为止;如果队列已满且达到了最大线程后还有任务进来,按照拒绝策略处理。
[0004]但是有些场景期望当核心线程满了之后,能优先创建线程来处理任务,加快任务的执行速度,此时就要求线程池在核心线程满了之后能优先创建线程来执行任务,达到最大线程数后再把任务堆积到队列。但是目前暂无可以实现令java线程池优先于队列使用最大线程数的方法,工作队列堆积,任务处理速度慢。
[0005]通过上述分析,现有技术存在的问题及缺陷为:目前暂无可以实现令java线程池优先于队列使用最大线程数的方法。线程是宝贵资源,对于IO密集型任务处理,例如频发的网络接口调用,数据库操作等,一般情况会配置较为合理的核心线程数量,来处理正常的任务。但是对于突发的任务陡增情况,还是期望能优先使用最大线程数量,而不是进行任务队列的堆积,最大限度的使用计算机资源来缓解任务的处理压力,此时的java线程池无法满足我们的使用要求,会造成资源和时间的浪费。
[0006]为了解决以上问题,有必要去改变java线程池的默认行为,对java线程池的相关组件进行改造。

技术实现思路

[0007]鉴于以上现有技术的缺点,解决以上问题及缺陷的意义为:本专利技术改变java线程池的默认工作行为,在保持相同核心线程的同时,当任务量增大的时候,能优先开启更多的线程执行,减少工作队列堆积,提升任务的处理速度。能够充分利用计算机资源缓解系统的压力,使系统更加稳定、高效。令java线程池优先于队列使用最大线程数的特性来适应不同的场景是有必要的。
[0008]针对现有技术存在的问题,第一方面:本专利技术提供了一种令java线程池优先于队列使用最大线程数的方法,包括如下步骤:
[0009]S101:重写工作队列;
[0010]S102:自定义拒绝策略;
[0011]S103:自定义线程池。
[0012]在本专利技术的一可选实施例中,重写工作队列包括:java线程池默认调用工作队列,
自定义工作队列并重写,拒绝接收任务。
[0013]在本专利技术的一可选实施例中,自定义拒绝策略包括:当达到最大线程数后,线程池触发拒绝策略,在拒绝策略中将任务放入队列中
[0014]在本专利技术的一可选实施例中,自定义线程池包括:自定义线程池时,将自定义的工作队列和自定义拒绝策略当做参数进行传入,优先使用最大线程数的线程池。
[0015]第二方面:本专利技术提供了一种令java线程池优先于队列使用最大线程数的系统,包括令java线程池优先于队列使用最大线程数的方法,且包括如下模块:重写工作队列模块;自定义拒绝策略模块;自定义线程池模块。
[0016]在本专利技术的一可选实施例中,重写工作队列模块用于java线程池默认调用工作队列,自定义工作队列并重写,拒绝接收任务。
[0017]在本专利技术的一可选实施例中,自定义拒绝策略模块:用于当达到最大线程数后,线程池触发拒绝策略,在拒绝策略中将任务放入队列中。
[0018]在本专利技术的一可选实施例中,自定义线程池模块用于自定义线程池时,将自定义的工作队列和自定义拒绝策略当做参数进行传入,优先使用最大线程数的线程池。
[0019]第三方面:本专利技术提供了一种信息数据处理终端,运行令java线程池优先于队列使用最大线程数的方法。
[0020]本专利技术的技术效果在于:
[0021]本专利技术改变java线程池的默认工作行为,在保持相同核心线程的同时,当任务量增大的时候,能优先开启更多的线程执行,减少工作队列堆积,提升任务的处理速度。
[0022]本专利技术性能优化,能够充分利用计算机资源缓解系统的压力,使系统更加稳定、高效。
[0023]本专利技术系统整合,打破了不同介质需要不同存储系统的壁垒,通过一套存储引擎将整个系统进行整合,真正实现数据的统一管理和调度。
[0024]本专利技术优先使用最大线程数量,最大限度的使用计算机资源来缓解任务的处理压力,提高使用需求,避免资源和时间的浪费。
附图说明
[0025]图1是本专利技术的实施例所提供的令java线程池优先于队列使用最大线程数的方法的流程图。
具体实施方式
[0026]以下通过特定的具体实例说明本专利技术的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本专利技术的其他优点与功效。本专利技术还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本专利技术的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0027]需要说明的是,以下实施例中所提供的图示仅以示意方式说明本专利技术的基本构想,遂图示中仅显示与本专利技术中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也
可能更为复杂。
[0028]请参阅图1所示,本专利技术提供一种令java线程池优先于队列使用最大线程数的方法,下面结合附图对本专利技术作详细的描述。
[0029]本专利技术是这样实现的,一种令java线程池优先于队列使用最大线程数的方法,令java线程池优先于队列使用最大线程数的方法包括以下步骤:
[0030]S101(步骤一),重写工作队列;由于java线程池的默认行为是核心线程数满后,将任务写入工作队列,所以要想改变这一行为,必须重写工作队列,使其调用的offer()方法拒绝接收任务,从而触发允许最大线程数内的线程创建;
[0031]S102(步骤二),自定义拒绝策略;当线程池内的线程数量达到最大线程数后,线程池会触发拒绝策略,由于在步骤一改变了工作队列的行为,丢弃了任务,为了不造成任务的丢失,必须在拒绝策略中将任务写入到队列中;
[0032]S103(步骤三),自定义线程池。完成上述两个步骤之后,需要将上述改变的两个线程池组件放入到自定义的线程池,才可以使整个改变生效。
[0033]需要说明的是,步骤一中,重写工作队列,包括:java线程池默认调用工作队列,自定义工作队列并重写,拒绝接收任务。
[0034]需要说明的是,步骤二中,自定义拒绝策略,包括:当达到最大线程数后,线程池触发拒绝策略,在拒绝策略中将任务放入队列中。
[0本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种令java线程池优先于队列使用最大线程数的方法,其特征在于,包括如下步骤:S101:重写工作队列;S102:自定义拒绝策略;S103:自定义线程池。2.根据权利要求1所述的令java线程池优先于队列使用最大线程数的方法,其特征在于,所述重写工作队列包括:java线程池默认调用工作队列,自定义工作队列并重写,拒绝接收任务。3.根据权利要求1所述的令java线程池优先于队列使用最大线程数的方法,其特征在于,所述自定义拒绝策略包括:当达到最大线程数后,线程池触发拒绝策略,在拒绝策略中将任务放入队列中。4.根据权利要求2所述的令java线程池优先于队列使用最大线程数的方法,其特征在于,所述自定义线程池包括:自定义线程池时,将所述自定义的工作队列和所述自定义拒绝策略当做参数进行传入,优先使用最大线程数的线程池。5.一种令java线程池优先于队列使用最大线程数的系统,其特征在于,包括如权利要求1所述...

【专利技术属性】
技术研发人员:赵新宇
申请(专利权)人:北京易华录信息技术股份有限公司
类型:发明
国别省市:

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

1