CN115391011A - 定时任务的调度方法、装置、设备、介质及程序 - Google Patents
定时任务的调度方法、装置、设备、介质及程序 Download PDFInfo
- Publication number
- CN115391011A CN115391011A CN202211027677.5A CN202211027677A CN115391011A CN 115391011 A CN115391011 A CN 115391011A CN 202211027677 A CN202211027677 A CN 202211027677A CN 115391011 A CN115391011 A CN 115391011A
- Authority
- CN
- China
- Prior art keywords
- task
- executable
- threads
- tasks
- thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开实施例提供了一种定时任务的调度方法、装置、电子设备、可读存储介质及程序,涉及计算机通信技术领域。该方法包括:获取后台定时任务;根据当前时间获取原始任务队列;从原始任务队列确认可执行任务;通过线程池的线程执行可执行任务。本公开实施例提供的方法,实现对定时任务的快速提取,提高定时任务的执行效率。
Description
技术领域
本公开涉及计算机通信技术领域,尤其涉及一种定时任务的调度方法、装置、电子设备、可读存储介质及程序。
背景技术
目前,随着系统的不管完善和系统运行时间的推移,系统创建越来越多的告警检测规则、定时任务规则、一次性任务规则,这些规则需要在固定时间执行。现有方案对大量的定时任务的过滤、检测效率不高,导致系统不断出现定时任务执行不及时等问题。
发明内容
本公开实施例提供了一种定时任务的调度方法、装置、电子设备、可读存储介质及程序,涉及计算机通信技术领域,根据当前时间获取原始任务队列,能够实现对定时任务的快速提取,提高定时任务的执行效率。
本公开实施例提供了一种定时任务的调度方法,包括:获取后台定时任务;根据当前时间获取原始任务队列;从原始任务队列确认可执行任务;通过线程池的线程执行可执行任务。
在一个实施例中,根据当前时间获取原始任务队列包括:根据当前时间的小时数和分钟数获取原始任务队列。
在一个实施例中,从原始任务队列确认可执行任务包括:通过单线程查询原始任务队列中与当前时间对应的可执行任务。
在一个实施例中,方法还包括:将可执行任务分为t列,且t列中的每列均配备互斥锁,其中,t是大于等于2的整数。
在一个实施例中,通过线程池的线程执行可执行任务包括:将线程池的线程分为t组,t组中的每一组线程分别用于执行可执行任务的t列中一列的可执行任务;每一组线程中的线程顺次执行对应的一列可执行任务中的任务;其中,t组中的每一组线程的线程内部之间实时通信,不同组之间的线程之间不通信。
在一个实施例中,通过线程池的线程执行可执行任务包括:一组线程中的线程执行完成对应的一列可执行任务中的任务后,继续执行其他列的可执行任务,直至执行完成所有可执行任务。
在一个实施例中,通过线程池的线程执行可执行任务包括:对于一次性任务,线程执行完成任务后,丢弃该任务;对于非一次性任务,线程执行完成任务后,将该任务重新加入后台定时任务。
本公开实施例提供了一种定时任务的调度装置,包括:获取模块,用于获取后台定时任务;获取模块,还用于根据当前时间获取原始任务队列;确认模块,用于从原始任务队列确认可执行任务;执行模块,用于通过线程池的线程执行可执行任务。
本公开实施例提供了一种电子设备,包括处理器、存储器、输入输出接口;处理器分别与存储器和输入输出接口相连,其中,输入输出接口用于接收数据及输出数据,存储器用于存储计算机程序,处理器用于调用计算机程序,以使得电子设备执行如上实施例中任一项的方法。
本公开实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序适于由处理器加载并执行,以使得具有处理器的电子设备执行上实施例中任一项的方法。
本公开实施例提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上实施例中任一项的方法。
本申请的定时任务的调度方法,通过获取后台定时任务;根据当前时间获取原始任务队列;从原始任务队列确认可执行任务;通过线程池的线程执行可执行任务,可以实现对定时任务的快速提取,提高定时任务的执行效率。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了相关技术中定时任务的调度的方法流程示意图;
图2是本公开实施例提供的一种定时任务的调度方法的流程图;
图3示出了本申请一个实施例的定时任务的调度的方法流程示意图;
图4示出了本申请一个实施例的定时任务的调度的方法流程示意图;
图5是本公开实施例提供的一种定时任务的调度装置的结构示意图;
图6是本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
在本公开实施例中,可以基于进程中的线程等技术,获取后台定时任务;根据当前时间获取原始任务队列;从原始任务队列确认可执行任务;通过线程池的线程执行可执行任务,从而实现对定时任务的快速提取,提高定时任务的执行效率。
下面首先对本公开的一些术语进行说明:
定时任务,是需要定时执行的任务。定时任务几乎出现在所有的系统中,对于系统初始化、更新数据、检测系统安全性、健康等方面具有不可替代的作用。定时任务可以是只需执行一次的任务,也可以是需要反复执行的任务,例如每天上午9点需要执行的定时任务等。而定时任务的执行条件,则可以通过配置信息中的定时规则来定义,也即,定时规则就是用于对定时任务的执行条件进行配置。例如可以是每天上午9点,也可以是每周一的下午3点等。
进程(Process),是计算机中的程序关于数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
线程池,包括多个线程,每个线程用于将目标定时任务队列中的目标定时任务分发至执行器,执行器则用于执行定时任务。目标定时任务队列发送至线程池后,各线程可以并行将目标定时任务队列中的各个目标定时任务进行分发,如果目标定时任务的数量多于线程池中的线程数,则可以先入线程池队列进行等待,空闲的线程则会从线程池队列中获取目标定时任务进行分发。
线程(thread),是操作系统能够进行运算调度的最小单位。线程被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
互斥锁,在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。
图1示出了相关技术中定时任务的调度的方法流程示意图。
图1中,1至n是后台定时任务队列101,传统进程中大量定时任务的调度的方法是通过K个线程从1到n对定时任务进行顺序的检测,检测出符合执行时间的执行任务,并执行,其中n和K均是大于等于2的整数。图1的方案导致多线程轮询无效任务(非当前执行任务)带来的CPU(CentralProcessingUnit,中央处理器)利用率低、定时任务执行不及时,以及多线程之间通信导致线程循环等待带来的性能低下等问题。
图2是本公开实施例提供的一种定时任务的调度方法的流程图。本公开实施例提供的方法可以由任一具有计算处理能力的电子设备执行,本公开不以此为限。
如图2所示,本公开实施例提供的方法可以包括如下步骤。
在步骤S210中,获取后台定时任务。
在该步骤中,电子设备的CPU可以获取后台定时任务。例如,电子设备的CPU可以激活后台定时任务。其中,后台定时任务是系统所有需要执行的定时任务的总和。
在步骤S220中,根据当前时间获取原始任务队列。
在该步骤中,电子设备的CPU根据当前时间获取原始任务队列。其中,当前时间可以是开始调度定时任务的时间。例如定时任务每分钟调度一次,当前时间例如是01:03(1点,3分钟)。原始任务队列是根据当前时间从后台定时任务中获取的定时任务队列。
在一个实施例中,根据当前时间的小时数和分钟数获取原始任务队列。例如,当前时间是01:03,可以首先将后台定时任务按照小时分为M份(例如12份或24份),每一份的区间为[0,1*24/M)、[24/M,2*24/M)…[(M-1)*24/M,M*24/M);然后将按照小时划分的定时任务再按照分钟分为N份(例如15份或60份),每一份的区间为(24/M)*[0,1*60/N)、(24/M)*[60/N,2*60/N)…(24/M)*[(N-1)*60/N,N*60/N);根据后台定时任务划分的份数,确定当前时间所在的分组,以当前时间所在的分组的后台定时任务为原始任务队列。通过分组的方式可以实现对定时任务的快速筛选,提高定时任务的执行效率。
在步骤S230中,从原始任务队列确认可执行任务。
在该步骤中,电子设备的CPU从原始任务队列确认可执行任务。在一个实施例中,通过单线程查询原始任务队列中与当前时间对应的可执行任务。例如在确定当前时间所在的分组后,当前时间的所在的分组的定时任务可能包括与当前时间的小时数和分钟数不一致的定时任务需要排除,或者虽然与当前时间的小时数和分钟数一致,但是执行的天数不是定时任务的调度的当天,而是后天或大后天等,也需要排除。因此,可以通过单线程对当前时间所在的分组的原始任务队列进行进一步的确认,从原始任务队列确认可执行任务。其中,确认为可执行任务后,从原始任务队列移出至可执行任务队列。
在步骤S240中,通过线程池的线程执行可执行任务。
在该步骤中,电子设备的CPU通过线程池的线程执行可执行任务。在一个实施例中,将可执行任务分为t列,且t列中的每列均配备互斥锁,其中,t是大于等于2的整数;将线程池的线程分为t组,t组中的每一组线程分别用于执行可执行任务的t列中一列的可执行任务;每一组线程中的线程顺次执行对应的一列可执行任务中的任务;其中,t组中的每一组线程的线程内部之间实时通信,不同组之间的线程之间不通信。因为可执行任务的t列可执行任务中每一列都配备互斥锁,因此每列可执行任务之间单独执行,互不干涉,因此可以减少线程之间的通信的负担,提高执行的效率。其中,一组线程中的线程执行完成对应的一列可执行任务中的任务后,继续执行其他列的可执行任务,直至执行完成所有可执行任务;对于一次性任务,线程执行完成任务后,丢弃该任务;对于非一次性任务,线程执行完成任务后,将该任务重新加入后台定时任务,例如重新加入至原始任务队列或下一次执行的原始任务队列。
本申请图2的定时任务的调度方法,通过获取后台定时任务;根据当前时间获取原始任务队列;从原始任务队列确认可执行任务;通过线程池的线程执行可执行任务,可以实现对定时任务的快速提取,减少线程之间的通信,提高定时任务的执行效率。
图3示出了本申请一个实施例的定时任务的调度的方法流程示意图。
图3中,在步骤301中,获取1至n后台定时任务队列,电子设备的CPU可以获取后台定时任务。电子设备的CPU根据当前时间,通过步骤302和步骤303,获取步骤304中的原始任务队列。例如,根据当前时间的小时数和分钟数获取原始任务队列。例如,可以首先将步骤301中的后台定时任务按照小时经过步骤302分为M份(例如12份或24份),每一份的区间为[0,1*24/M)、[24/M,2*24/M)…[(M-1)*24/M,M*24/M);然后将按照小时划分的定时任务经过步骤303再按照分钟分为N份(例如15份或60份),每一份的区间为(24/M)*[0,1*60/N)、(24/M)*[60/N,2*60/N)…(24/M)*[(N-1)*60/N,N*60/N);经过步骤302和303的两级筛选确定步骤304中的原始任务队列。
电子设备的CPU从步骤304中原始任务队列确认可执行任务。例如,通过单线程查询步骤304中原始任务队列中与当前时间对应的可执行任务。从步骤304中原始任务队列确认可执行任务,确认为可执行任务后,将可执行任务从原始任务队列移出至步骤305中的可执行任务队列。电子设备的CPU在步骤305中将可执行任务分为t列,且t列中的每列均配备互斥锁,其中,t是大于等于2的整数。电子设备的CPU通过在步骤306中将线程池的K个线程分为t组,t组中的每一组线程分别用于执行可执行任务的t列中一列的可执行任务;每一组线程中的线程顺次执行对应的一列可执行任务中的任务;其中,t组中的每一组线程的线程内部之间实时通信,不同组之间的线程之间不通信。因为可执行任务的t列可执行任务中每一列都配备互斥锁,因此每列可执行任务之间单独执行,互不干涉,可以减少线程之间的通信的负担,提高执行的效率。其中,一组线程中的线程执行完成对应的一列可执行任务中的任务后,继续执行其他列的可执行任务,直至执行完成所有可执行任务;对于一次性任务,线程执行完成任务后,丢弃该任务;对于非一次性任务,线程执行完成任务后,将该任务重新加入后台定时任务,例如重新加入至原始任务队列。
本申请图3的定时任务的调度方法,通过获取后台定时任务;根据当前时间获取原始任务队列;从原始任务队列确认可执行任务;将可执行任务分为t列,将线程池的线程分为t组,t组中的每一组线程分别用于执行可执行任务的t列中一列的可执行任务,可以实现对定时任务的快速提取,减少线程之间的通信,提高定时任务的执行效率。
图4示出了本申请一个实施例的定时任务的调度的方法400流程示意图。
参照图4,在步骤401中,开始定时任务的调度;在步骤40中2调度唤醒后台定时任务;在步骤403判断线程池是否有休眠线程;如果没有休眠线程,则执行步骤404,提示可用线程不足,然后结束任务;如果有休眠线程,则执行步骤405,根据当前时间的小时数和分钟数从后台定时任务获取原始任务队列;在步骤406中,可以单线程将原始任务队列中loop为0且与当前时间对应的定时任务标记为可执行任务,loop非0的定时任务loop减1,不做标记;在步骤407中,唤醒线程池所有线程;在步骤408中,将可执行任务分入可执行任务队列中,并从原始任务队列移除对应可执行任务;在步骤409中,线程池的线程获取可执行任务队列组锁,例如可以线程池的线程分组执行可执行任务队列;在步骤410中,判断是否获取组锁成功;如果成功则执行步骤411,获取可执行任务队列中的定时任务;如果不成功,则执行步骤409获取可执行任务队列组锁;在步骤412中,从可执行任务队列移除已获取的定时任务并释放组锁;在步骤413中,获取下一次执行的原始任务队列组锁;在步骤414中,判断获取下一次执行的原始任务队列锁是否成功,如果不成功继续执行步骤413,如果成功,执行步骤415,判断是否为一次性任务,如果是一次性任务,执行步骤416,丢弃任务;如果不是一次性任务,执行步骤417,根据执行间隔将当前任务加入下一次执行的原始任务队列;在步骤418中,释放下一次执行的原始任务队列组锁;在步骤419中,判断当前可执行任务队列任务是否执行完毕,如果没有执行完毕,则执行步骤409,线程池的线程获取可执行任务队列组锁;如果该执行完毕,则执行步骤420,判断所有可执行任务队列的所有任务是否执行完毕,如果所有任务没有执行完毕,则执行步骤422,寻找下一个未执行完的可执行任务队列,去执行下一队列的任务;如果该所有任务执行完毕,则执行步骤421,判断当前后台定时任务是否已完成,如果完成,则执行步骤423,定时任务休眠,继而执行步骤425结束任务;如果后台定时任务没有完成,执行步骤424,阻塞等待,继而执行步骤409线程池的线程获取可执行任务队列组锁。
图4的定时任务的调度的方法,通过调度唤醒后台定时任务,根据当前时间的小时数和分钟数从后台定时任务获取原始任务队列,在原始任务队列中标记可执行任务,将可执行任务分入可执行任务队列中,线程池的线程分组执行可执行任务队列定时任务,并判断当前可执行任务队列任务是否执行完毕,如果没有执行完毕继续执行其他可执行任务队列,可以实现对定时任务的快速提取,减少线程之间的通信,提高定时任务的执行效率。
图5是本公开实施例提供的一种定时任务的调度装置的结构示意图。
如图5所示,本公开实施例提供的定时任务的调度装置500可以包括:
获取模块510,用于获取后台定时任务;
获取模块510,还用于根据当前时间获取原始任务队列;
确认模块520,用于从原始任务队列确认可执行任务;
执行模块530,用于通过线程池的线程执行可执行任务。
图5所示的定时任务的调度装置,通过获取模块获取后台定时任务,根据当前时间获取原始任务队列;确认模块从原始任务队列确认可执行任务;执行模块通过线程池的线程执行可执行任务,可以实现对定时任务的快速提取,提高定时任务的执行效率。
在一个实施例中,获取模块510,还用于根据当前时间的小时数和分钟数获取原始任务队列。
在一个实施例中,确认模块520,还用于通过单线程查询原始任务队列中与当前时间对应的可执行任务。
在一个实施例中,执行模块530,还用于将可执行任务分为t列,且t列中的每列均配备互斥锁,其中,t是大于等于2的整数。
在一个实施例中,执行模块530,还用于将线程池的线程分为t组,t组中的每一组线程分别用于执行可执行任务的t列中一列的可执行任务;每一组线程中的线程顺次执行对应的一列可执行任务中的任务;其中,t组中的每一组线程的线程内部之间实时通信,不同组之间的线程之间不通信。
在一个实施例中,执行模块530,还用于一组线程中的线程执行完成对应的一列可执行任务中的任务后,继续执行其他列的可执行任务,直至执行完成所有可执行任务。
在一个实施例中,执行模块530,还用于对于一次性任务,线程执行完成任务后,丢弃该任务;对于非一次性任务,线程执行完成任务后,将该任务重新加入后台定时任务。
参见图6,图6是本公开实施例提供的一种电子设备600的结构示意图。如图6所示,本公开实施例中的电子设备可以包括:一个或多个处理器601、存储器602和输入输出接口603。该处理器601、存储器602和输入输出接口603通过总线604连接。存储器602用于存储计算机程序,该计算机程序包括程序指令,输入输出接口603用于接收数据及输出数据,如用于宿主机与电子设备之间进行数据交互,或者用于在宿主机中的各个虚拟机之间进行数据交互;处理器601用于执行存储器602存储的程序指令。
其中,该处理器601可以执行如下操作:
获取后台定时任务;根据当前时间获取原始任务队列;从原始任务队列确认可执行任务;通过线程池的线程执行可执行任务。
在一些可行的实施方式中,该处理器601可以是中央处理单元(centralprocessing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器602可以包括只读存储器和随机存取存储器,并向处理器601和输入输出接口603提供指令和数据。存储器602的一部分还可以包括非易失性随机存取存储器。例如,存储器602还可以存储设备类型的信息。
具体实现中,该电子设备可通过其内置的各个功能模块执行如上述实施例中各个步骤所提供的实现方式,具体可参见上述实施例中各个步骤所提供的实现方式,在此不再赘述。
本公开实施例通过提供一种电子设备,包括:处理器、输入输出接口、存储器,通过处理器获取存储器中的计算机程序,执行上述实施例中所示方法的各个步骤,进行传输操作。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序适于由该处理器加载并执行上述实施例中各个步骤所提供的方法,具体可参见上述实施例中各个步骤所提供的实现方式,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本公开所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本公开方法实施例的描述。作为示例,计算机程序可被部署为在一个电子设备上执行,或者在位于一个地点的多个电子设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行。
该计算机可读存储介质可以是前述任一实施例提供的装置或者该电子设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本公开实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述实施例中的各种可选方式中所提供的方法。
本公开实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在该说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
本公开实施例提供的方法及相关装置是参照本公开实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程传输设备的处理器以产生一个机器,使得通过计算机或其他可编程传输设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程传输设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程传输设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本公开较佳实施例而已,当然不能以此来限定本公开之权利范围,因此依本公开权利要求所作的等同变化,仍属本公开所涵盖的范围。
Claims (11)
1.一种定时任务的调度方法,其特征在于,包括:
获取后台定时任务;
根据当前时间获取原始任务队列;
从所述原始任务队列确认可执行任务;
通过线程池的线程执行所述可执行任务。
2.根据权利要求1所述的方法,其特征在于,根据当前时间获取原始任务队列包括:
根据所述当前时间的小时数和分钟数获取原始任务队列。
3.根据权利要求1所述的方法,其特征在于,从所述原始任务队列确认可执行任务包括:
通过单线程查询所述原始任务队列中与所述当前时间对应的可执行任务。
4.根据权利要求1所述的方法,其特征在于,还包括:
将所述可执行任务分为t列,且t列中的每列均配备互斥锁,其中,t是大于等于2的整数。
5.根据权利要求4所述的方法,其特征在于,通过线程池的线程执行所述可执行任务包括:
将所述线程池的线程分为t组,t组中的每一组线程分别用于执行所述可执行任务的t列中一列的可执行任务;
每一组线程中的线程顺次执行对应的一列可执行任务中的任务;
其中,t组中的每一组线程的线程内部之间实时通信,不同组之间的线程之间不通信。
6.根据权利要求5所述的方法,其特征在于,通过线程池的线程执行所述可执行任务包括:
一组线程中的线程执行完成对应的一列可执行任务中的任务后,继续执行其他列的可执行任务,直至执行完成所有可执行任务。
7.根据权利要求1所述的方法,其特征在于,通过线程池的线程执行所述可执行任务包括:
对于一次性任务,线程执行完成任务后,丢弃该任务;
对于非一次性任务,线程执行完成任务后,将该任务重新加入后台定时任务。
8.一种定时任务的调度装置,其特征在于,包括:
获取模块,用于获取后台定时任务;
所述获取模块,还用于根据当前时间获取原始任务队列;
确认模块,用于从所述原始任务队列确认可执行任务;
执行模块,用于通过线程池的线程执行所述可执行任务。
9.电子设备,其特征在于,包括处理器、存储器、输入输出接口;
所述处理器分别与所述存储器和所述输入输出接口相连,其中,所述输入输出接口用于接收数据及输出数据,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述电子设备执行权利要求1-7任一项所述的方法。
10.计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的电子设备执行权利要求1-7任一项所述的方法。
11.计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211027677.5A CN115391011A (zh) | 2022-08-25 | 2022-08-25 | 定时任务的调度方法、装置、设备、介质及程序 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211027677.5A CN115391011A (zh) | 2022-08-25 | 2022-08-25 | 定时任务的调度方法、装置、设备、介质及程序 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115391011A true CN115391011A (zh) | 2022-11-25 |
Family
ID=84122619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211027677.5A Pending CN115391011A (zh) | 2022-08-25 | 2022-08-25 | 定时任务的调度方法、装置、设备、介质及程序 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115391011A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116932227A (zh) * | 2023-09-14 | 2023-10-24 | 西安华创马科智能控制系统有限公司 | 一种基于单线程的任务调度方法及装置 |
-
2022
- 2022-08-25 CN CN202211027677.5A patent/CN115391011A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116932227A (zh) * | 2023-09-14 | 2023-10-24 | 西安华创马科智能控制系统有限公司 | 一种基于单线程的任务调度方法及装置 |
CN116932227B (zh) * | 2023-09-14 | 2023-12-22 | 西安华创马科智能控制系统有限公司 | 一种基于单线程的任务调度方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106802826B (zh) | 一种基于线程池的业务处理方法及装置 | |
CN109918141B (zh) | 线程执行方法、装置、终端及存储介质 | |
CN110704173A (zh) | 任务调度方法、调度系统、电子设备及计算机存储介质 | |
CN110069827B (zh) | Fpga在线逻辑分析仪的布局布线方法与装置 | |
CN115391011A (zh) | 定时任务的调度方法、装置、设备、介质及程序 | |
CN108700633A (zh) | 针对安全并且有保障的汽车应用的超快自主时钟监测电路 | |
CN109445954B (zh) | 一种定时任务的执行方法、终端设备及存储介质 | |
CN111552614A (zh) | 一种cpu使用率的统计方法及装置 | |
US9513969B2 (en) | Method for the management of task execution in a computer system | |
EP3516515B1 (en) | Scheduling of tasks in a multiprocessor device | |
CN110865877B (zh) | 一种任务请求的响应方法及设备 | |
CN110221914B (zh) | 文件处理方法及装置 | |
EP2804102B1 (en) | Parallel atomic increment | |
CN113918336A (zh) | 基于多核CPU的FreeRTOS运行任务方法及装置 | |
CN111679895A (zh) | 分布式定时任务的执行方法、装置、设备及可读存储介质 | |
CN111026526B (zh) | 程序的定时器配置方法、装置、存储介质及终端设备 | |
CN109669735B (zh) | 基于延时注册的应用启动方法、装置和存储介质 | |
CN111913816A (zh) | Gpgpu中簇的实现方法、装置、终端及介质 | |
CN112988355B (zh) | 程序任务的调度方法、装置、终端设备及可读存储介质 | |
CN116302420A (zh) | 并发调度方法、装置、计算机设备及计算机可读存储介质 | |
CN109634766B (zh) | 提升数据流机运行效率的方法、装置、设备及存储介质 | |
JP2018036864A (ja) | 電子制御装置、解析システム | |
CN114647491A (zh) | 一种任务调度方法、装置、设备及存储介质 | |
CN110149356A (zh) | 一种网络请求异常状态统一处理方法及装置 | |
CN110442434B (zh) | 一种任务调度方法、装置、存储介质和服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |