一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于线程池高并发数据库访问方法、系统及设备与流程

2021-12-01 01:42:00 来源:中国专利 TAG:


1.本发明属于dcs传输数据的处理,主要涉及高并发访问数据库领域,具体为一种基于线程池高并发数据库访问方法、系统及设备。


背景技术:

2.在分散控制系统(dcs)上位机部分,通常会同时运行多个上位机软件,也就是多个进程,上位机中的多个进程通常会同时对数据库发起数据访问请求。而当系统中出现大量上位机进程同时请求访问数据库时有可能造成数据库服务器响应缓慢甚至崩溃。另外,当系统中出现大量进程同时请求访问数据库时有可能造成进程在系统调度之后被挂起暂停执行,而后来的进程优先级总是较挂起的上位机进程更高,从而导致被挂起的上位机进程始终得不到执行。而在一个应用进程中,会创建多个线程,这也就意味着,需要多次创建并销毁线程。而创建并销毁线程的过程势必会消耗内存,而内存是非常宝贵的资源,因此大量占用内存不可避免的造成系统响应缓慢甚至服务器崩溃等代价。


技术实现要素:

3.针对现有技术中系统中出现大量进程同时请求访问数据库时存在服务器响应缓慢甚至崩溃的问题,本发明提供一种基于线程池高并发数据库访问方法、系统及设备,通过线程池可以方便的管理线程,也可以减少内存的消耗,采取线程池控制系统对数据库的访问等措施,缓解多个应用进程同时访问数据库时占用过多内存资源带来的系统负荷压力,由此实现快速高并发访问数据库。
4.本发明是通过以下技术方案来实现:一种基于线程池高并发数据库访问方法,包括如下步骤:主线程监测系统中其它线程对数据库发起请求;所述请求带有对数据库的操作指令;主线程监测到系统中其它线程对数据库发起的带有操作指令的请求后,发射唤醒信号指令唤醒管理线程;管理线程接收到主线程发来的信号指令后查看发起请求线程的任务队列是否有空闲;当请求线程的任务队列有空闲时,管理线程将带有操作指令的请求通过遍历线程池的方式来执行数据库的访问;当请求线程的任务队列不为空闲时,管理线程将带有操作指令的请求通过遍历扩展线程池的方式来执行数据库的访问。
5.优选的,管理线程将带有操作指令的请求通过遍历扩展线程池的方式来执行数据库的访问时,管理线程遍历扩展线程池中查看是否有空闲的扩展线程;当遍历扩展线程池后发现有空闲的扩展线程时,启用该空闲扩展线程;并根据请求线程发起的数据库访问请求类型,发送对应的消息至相应的请求线程的任务队列队尾
中;当遍历扩展线程池后发现没有空闲的扩展线程时,则该线程会排队等待直到扩展线程空闲后,再执行访问数据库请求。
6.优选的,管理线程将带有操作指令的请求通过遍历线程池的方式来执行数据库的访问时,管理线程先遍历线程池查看是否有空闲的线程;当遍历线程池时发现有空闲的线程时,管理线程按照请求线程任务队列的优先级,让符合条件的任务出队,并让线程池中该空闲线程对请求线程所发起的数据库访问请求进行处理;当遍历线程池后发现没有空闲的线程时,则管理线程将带有操作指令的请求通过判断扩展线程数量是否超过上限来执行数据库的访问。
7.进一步的,管理线程按照任务队列的优先级,让符合条件的任务出队,所述符合条件的任务出队操作为任务队列中优先级较低的任务。
8.进一步的,线程池空闲线程对请求线程所发起的访问数据库请求进行处理时,将该空闲线程的状态变更为忙碌,直到请求线程访问请求结束后再将线程池中该线程状态变更为空闲。
9.进一步的,通过判断扩展线程数量是否超过上限执行数据库的访问,具体判断如下:当扩展线程的数量没有达到上限时,则创建一个新的扩展线程,再执行访问数据库访问请求;当扩展线程数量已经达到扩展线程数量上限,则该请求线程会排队等待直到扩展线程数量低于扩展线程数量上限后,再新建一个扩展线程,再执行数据库的访问请求。
10.进一步的,在创建一个扩展线程后,根据请求线程发起的数据库访问请求类型,发送对应的消息至相应的请求线程的任务队列队尾中,实现对数据库的相关操作。
11.一种基于线程池高并发数据库访问系统,包括监测模块,用于主线程监测系统中其它线程对数据库发起请求;所述请求带有对数据库的操作指令;发射模块,用于主线程监测到系统中其它线程对数据库发起的带有操作指令的请求后,发射唤醒信号指令唤醒管理线程;执行模块,用于管理线程接收到主线程发来的信号指令后查看发起请求线程的任务队列是否有空闲;第一处理器模块,用于当请求线程的任务队列有空闲时,管理线程将带有操作指令的请求通过遍历线程池的方式来执行数据库的访问;第二处理器模块,用于当请求线程的任务队列不为空闲时,管理线程将带有操作指令的请求通过遍历扩展线程池的方式来执行数据库的访问。
12.优选的,执行模块包括查看单元和发送单元;查看单元,用于查看请求的线程的任务队列是否为空闲;发送单元,用于将空闲线程发起的数据库访问请求类型发送对应的消息至相应的任务队列队尾中进行排队等待。
13.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理
器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上述任一项所述基于线程池高并发数据库访问方法的步骤。
14.与现有技术相比,本发明具有以下有益的技术效果:本发明提供了一种基于线程池高并发数据库访问方法,首先通过主线程监测系统中其它线程发起的访问数据库请求,接收到请求后将信号指令发射至管理线程,并对管理线程进行唤醒操作,管理线程接收到信号后通过查看请求线程的任务队列是否有空闲来用不同的方式执行数据库的访问,从而避免了大量请求线程同时请求访问数据库时存在服务器响应缓慢甚至崩溃的问题。另外,通过增加数据库的并发访问数量,以及通过线程池管理线程,也可以减少内存的消耗,缓解多个进程同时访问数据库占用过多计算机资源带来的系统负荷压力。最后,采用线程池技术可高效的解决系统中多个进程同时数据库时效低下的问题,进一步提升了高并发访问数据库的稳定性。由此实现快速高并发访问数据库。
附图说明
15.图1为本发明中基于线程池高并发数据库访问方法的流程示意图;图2为本发明中基于线程池高并发数据库访问系统的结构示意图。
具体实施方式
16.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
17.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
18.参见图1,本发明一个实施例中,提供了一种基于线程池高并发数据库访问方法,通过线程池可以方便的管理线程,也可以减少内存的消耗,采取线程池控制系统对数据库的访问等措施,缓解应用进程占用过多内存资源带来的系统负荷压力,由此实现快速高并发访问数据库;具体包括如下步骤:主线程监测系统中其它线程对数据库所发起的请求;所述请求带有操作指令;主线程监测到系统中其它线程对数据库发起的带有操作指令的请求后,并发射唤醒信号指令唤醒管理线程;管理线程接收到主线程发来的信号指令后查看发起请求的任务队列是否有空闲;当线程的任务队列有空闲时,管理线程将带有操作指令的请求通过遍历线程池的方式来执行数据库的访问;
当请求线程的任务队列不为空闲时,管理线程将带有操作指令的请求通过遍历扩展线程池的方式来执行数据库的访问。
19.具体的,管理线程将带有操作指令的请求通过遍历扩展线程池的方式来执行数据库的访问时,管理线程遍历扩展线程池中查看是否有空闲的扩展线程;当遍历扩展线程池发现有空闲的扩展线程时,启用该空闲扩展线程;并根据请求线程发起的数据库访问请求类型发送对应的消息至相应的请求线程的任务队列队尾中;当遍历扩展线程池后发现没有空闲的扩展线程时,则该线程会排队等待直到扩展线程空闲后,再执行访问数据库请求。
20.具体的,管理线程将带有操作指令的请求通过遍历线程池的方式来执行数据库的访问时,遍历线程池中查看是否有空闲的线程;当遍历线程池时发现有空闲的线程时,管理线程按照请求线程任务队列的优先级,让符合条件的任务出队,并让线程池中该空闲线程对请求线程所发起的数据库访问数请求进行处理;当遍历线程池后发现没有空闲的线程时,则管理线程将带有操作指令的请求通过判断扩展线程数量是否超过上限来执行数据库的访问,其中上限是指线程池所能容纳的扩展线程的数量。
21.其中,管理线程按照任务队列的优先级,让符合条件的任务出队,所述符合条件为任务队列中优先级较低的任务,其中优先级较低的任务在任务队列中出队后,为优先级较高的任务在任务队列中提供空位,可使得优先级较高的任务通过管理线程的请求执行数据库的访问。
22.线程池中空闲线程对系统中其它线程所发起的访问数据库请求进行处理时,将该空闲线程的状态变更为忙碌,直到请求线程访问请求结束后再将线程池中该线程状态变更为空闲。
23.具体的,通过判断扩展线程数量是否超过上限执行数据库的访问,具体判断如下:当扩展线程的数量没有达到上限时,则创建一个新的扩展线程,再执行访问数据库访问请求;当扩展线程数量已经达到扩展线程数量上限,则该请求线程会排队等待直到扩展线程数量低于扩展线程数量上限后,再新建一个扩展线程,再执行数据库的访问请求。
24.其中,在创建一个扩展线程后,根据请求线程发起的数据库访问请求类型,发送对应的消息至相应的请求线程的任务队列队尾中实现对数据库的相关操作。
25.综上所示,本发明提供了一种基于线程池高并发数据库访问方法,由此实现快速高并发访问数据库。首先通过主线程监测系统中其它线程发起的访问数据库请求,接收到请求后将信号指令发射至管理线程,并对管理线程进行唤醒操作,管理线程接收到信号后通过查看请求的线程的任务队列是否有空闲来用不同的方式执行数据库的访问,从而避免了大量请求线程同时请求访问数据库时存在服务器响应缓慢甚至崩溃的问题。另外,通过增加数据库的并发访问数量,以及通过线程池管理线程,也可以减少内存的消耗,缓解多个进程同时访问数据库占用过多计算机资源带来的系统负荷压力。最后,采用线程池技术可高效的解决系统中多个进程同时数据库时效低下的问题,进一步提升了高并发访问数据库的稳定性。由此实现快速高并发访问数据库。
26.下述为本发明的装置实施例,可以用于执行本发明方法实施例。对于装置实施例中未披露的细节,请参照本发明方法实施例。
27.本发明在一个实施例中,提供一种基于线程池高并发数据库访问系统,用于实现基于线程池高并发数据库访问方法,具体的,如图2所示,基于线程池高并发数据库访问系统该包括监测模块,用于主线程监测系统中其它线程对数据库发起请求;所述请求带有对数据库的操作指令;发射模块,用于主线程监测到系统中其它线程对数据库发起的带有操作指令的请求后,发射唤醒信号指令唤醒管理线程;执行模块,用于管理线程接收到主线程发来的信号指令后查看发起请求线程的任务队列是否有空闲;第一处理器模块,用于当请求线程的任务队列有空闲时,管理线程将带有操作指令的请求通过遍历线程池的方式来执行数据库的访问;第二处理器模块,用于当请求线程的任务队列不为空闲时,管理线程将带有操作指令的请求通过遍历扩展线程池的方式来执行数据库的访问。
28.本实施例中,执行模块包括查看单元和发送单元;其中查看单元,用于查看请求的线程的任务队列是否为空闲;发送单元,用于将空闲线程发起的数据库访问请求类型发送对应的消息至相应的任务队列队尾中进行排队等待。
29.本发明再一个实施例中,提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于执行所述计算机存储介质存储的程序指令。处理器可能是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor、dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field

programmable gatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其适于实现一条或一条以上指令,具体适于加载并执行一条或一条以上指令从而实现相应方法流程或相应功能;本发明实施例所述的处理器可以用于基于线程池高并发数据库访问方法的操作。
30.本领域内的技术人员应明白,本技术的实施例可提供为为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
31.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实
现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
32.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
33.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
34.最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献