一种获取任务进度的方法、终端设备及存储介质技术

技术编号:19821159 阅读:30 留言:0更新日期:2018-12-19 14:29
本发明专利技术公开了一种获取任务进度的方法、终端设备及存储介质,适用于获取线程进度。本发明专利技术提供的方法包括:主线程接收到数据处理任务后,创建预设数量的子线程,并设定CountDownLatch的初始值为子线程的数量;在每个子线程中定义当前子线程对应的任务执行方法和获取当前子线程任务执行进度的方法;当子线程执行任务对应的每个分任务执行成功或错误时,将所述CountDownLatch值减一,并计算所述子线程的任务执行进度。本发明专利技术中通过CountDownLatch来对任务的执行状况计数,能够保障线程安全,使得计数的更准确,进而得到的任务进度信息也更加可靠。

【技术实现步骤摘要】
一种获取任务进度的方法、终端设备及存储介质
本专利技术涉及计算机领域,尤其涉及一种获取任务进度的方法、终端设备及存储介质。
技术介绍
计算机进行任务处理时,会创建大量线程进行异步的计算。例如,要统计一些主播的信息,程序会根据主播的ID或UID,开启多个线程分别计算对应的类别的数据。这种并行的计算方法能提高计算效率,加快响应。但多个线程计算时,只能得到总的计算结果,对于每个线程执行状态并不了解。目前,常用的方法是直接在每个线程的run()函数中定义任务状态获取方法,然后通过计数对每个线程执行进度监控。这种通过统计各任务是否执行完毕的方法,在线程并发时,由于存在线程安全问题,致使获取到的任务进度信息准确性较低。
技术实现思路
有鉴于此,本专利技术实施例提供了一种获取任务进度的方法、终端设备及存储介质,以解决统计任务进度时存在线程安全的问题。本专利技术实施例的第一方面,提供了一种数据同步方法,包括:主线程接收到数据处理任务后,创建预设数量的子线程,并设定CountDownLatch的初始值为子线程的数量;在所述创建的每个子线程中定义当前子线程对应的任务执行方法和获取当前子线程任务执行进度的方法;当子线程执行任务成功或异常时,将所述CountDownLatch值减一,并根据当前所述CountDownLatch值,计算所述子线程当前任务的完成进度。本专利技术实施例的第二方面,提供了一种终端设备,包括:创建模块:用于主线程接收到数据处理任务后,创建预设数量的子线程,并设定CountDownLatch的初始值为子线程的数量;定义模块:用于在所述创建的每个子线程中定义当前子线程对应的任务执行方法和获取当前子线程任务执行进度的方法;计算模块:用于当子线程执行任务成功或异常时,将所述CountDownLatch值减一,并根据当前所述CountDownLatch值,计算所述子线程当前任务的完成进度。本专利技术实施例的第三方面,提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本专利技术实施例第一方面所述方法的步骤。本专利技术实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本专利技术实施例第一方面提供的所述方法的步骤。本专利技术实施例的第五方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被一个或多个处理器执行时实现本专利技术实施例第一方面提供的所述方法的步骤。本专利技术实施例中,通过CountDownLatch来对子线程中任务的执行状况计数,进而统计已完成执行的任务在分配的任务量中的占比,确定任务执行进度。这种通过CountDownLatch获得线程封闭锁的方式,能够保障线程安全,使得计数的更准确,进而得到的任务进度信息也更加可靠。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的获取任务进度方法的一个实施例流程图;图2为本专利技术实施例提供的获取任务进度方法的另一个实施例流程图;图3为本专利技术实施例提供的获取任务进度的终端设备的结构示意图;图4为本专利技术实施例提供的终端装置的结构示意图。具体实施方式本专利技术实施例提供了一种获取任务进度的方法、终端设备及存储介质,用于保障线程安全,准确获取任务进度。为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本专利技术一部分实施例,而非全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。实施例一:请参阅图1,本专利技术实施例提供的获取任务进度方法的流程示意图,包括以下步骤:S101、主线程接收到数据处理任务后,创建预设数量的子线程,并设定CountDownLatch的初始值为子线程的数量;所述主线程是在启动程序时,系统自动创建的一个线程。可以通过主线程创建主线程进行任务分配处理,所述处理任务一般为系统下达的对特定数据进行逻辑处理的指令。当系统需要处理某类数据时,会根据主线程生成子线程进行并行处理,这种多个子线程并行处理能够加快处理速度,但为了实现负载均衡,创建的子线程会有一定限量。在本专利技术实施例中,所述预设数量一般可根据处理的数据量或CPU性能等参数来确定。所述CountDownLatch是一个同步辅助类,在完成一组正在执行的线程之前,允许一个或多个线程等待,其功能相当于一个封闭锁,在该封闭锁中的线程在执行完前不会被阻断。在CountDownLatch中有个计数器,该计数器值可以设定为需要同步执行的线程数量。将创建的子线程通过CountDownLatch计数,可以保障线程安全,且使得同步线程的间的计数不会发生干扰。可选的,所述创建预设数量的子线程还包括:划分处理任务,为每个子线程分配执行任务量。在本专利技术实施例中所述处理任务为计算某一类数据,例如当该类数据有10000个,可创建100个线程,每个线程计算100个该类数据。所述分配可以均等分配计算量也可以不均等。进一步的,在设定CountDownLatch的初始值为子线程的数量前初始化一个CountDownLatch。S102、在所述创建的每个子线程中定义当前子线程对应的和获取当前子线程任务执行进度的方法;在每一个线程中,所述任务执行方法为具体的业务处理逻辑,例如对数据加权计算,该任务执行方法可以定义在其他类中,然后在当前线程引用该类的执行方法。所述获取任务执行进度的方法,即统计已经执行过的线程的方法,所述执行进度是通过计算当前已经执行的任务在分配的任务量中的占比。由于每个线程中分配的任务可能包含多个分任务,这些分任务共用一套业务处理逻辑,根据对分任务是否执行完毕,就可以确定该线程是否已经执行完成,或还在执行中,这样方便量化任务处理进度。可选的,为每个子线程命名后,在每个子线程的run方法中,定义当前子线程对应的任务执行方法;设定当前子线程的执行任务对应的每个分任务执行成功或出现异常时,将当前子线程的CountDownLatch值减一;所述CountDownLatch值通过定义的变量,来实现初始值的递减操作。根据所述变量值和为当前子线程分配的任务量,计算当前子线程的任务执行进度。S103、当子线程执行任务成功或异常时,将所述CountDownLatch值减一,并根据当前所述CountDownLatch值,计算所述子线程当前任务的完成进度。所述执行成功或错误一般指执行分任务时,是否发生了异常。所述分任务指的是在子线程中执行的任务,这些任务有多个个且共用一套处理逻辑,在批量处理数据时,多个子线程中处理的数据方法相同,对每个数据的处理相当于一个分任务。所述CountDownLatch值减一,即计时器值减一,每调用一次CountDownLatch,CountDownLatch的值自动减一。所述任务执行进本文档来自技高网...

【技术保护点】
1.一种获取任务进度的方法,其特征在于,包括:主线程接收到数据处理任务后,创建预设数量的子线程,并设定CountDownLatch的初始值为子线程的数量;在所述创建的每个子线程中定义当前子线程对应的任务执行方法和获取当前子线程任务执行进度的方法;当子线程执行任务成功或异常时,将所述CountDownLatch值减一,并根据当前所述CountDownLatch值,计算所述子线程当前任务的完成进度。

【技术特征摘要】
1.一种获取任务进度的方法,其特征在于,包括:主线程接收到数据处理任务后,创建预设数量的子线程,并设定CountDownLatch的初始值为子线程的数量;在所述创建的每个子线程中定义当前子线程对应的任务执行方法和获取当前子线程任务执行进度的方法;当子线程执行任务成功或异常时,将所述CountDownLatch值减一,并根据当前所述CountDownLatch值,计算所述子线程当前任务的完成进度。2.根据权利要求1所述的方法,其特征在于,所述创建预设数量的子线程还包括:划分处理任务,为每个子线程分配执行任务量。3.根据权利要求1所述的方法,其特征在于,所述在每个子线程中定义当前子线程对应的任务执行方法和获取当前子线程任务执行进度的方法具体为:为每个子线程命名后,在每个子线程的run方法中,定义当前子线程对应的任务执行方法;设定当当前子线程的执行任务对应的每个分任务执行成功或出现异常时,将当前子线程的CountDownLatch值减一;根据所述变量值和为当前子线程分配的任务量,计算任务执行进度。4.根据权利要求3所述的方法,其特征在于,所述当子线程执行任务成功或异常时,将所述CountDownLatch值减一包括:获取当前子线程的名称,并将当前子线程的名称存入数据库。5.根据权利要求1所述的方法,其特征在于,所述当子线程执行任务成功或异常时,将所述CountDownLatch值减一,并根据当前所述CountDownLatch值,计算所述子线程当前任务的完成进度还包括:创建变量,通过所述变量分别记录所述子线程中分任务执行成功的数量和出错的数量,...

【专利技术属性】
技术研发人员:张振铎张文明陈少杰
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

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

1