一种基于多线程的数据处理方法及装置与流程

文档序号:12177158阅读:278来源:国知局
一种基于多线程的数据处理方法及装置与流程

本发明涉及数据处理技术领域,尤其涉及一种基于多线程的数据处理方法及装置。



背景技术:

数据库是按照数据结构来组织、存储和管理数据的仓库,数据库对数据的查询、处理速度远远超过普通文件的处理速度。随着移动互联网业务和用户数量的快速增长,传统的入库机制已经很难满足入库管理的需求,因此,采用多线程处理数据的方法应运而生。然而,在多线程处理数据的过程中,有时会出现系统崩溃的情况,一旦系统崩溃,内存中记录的活跃线程数就会为0,在系统重启后无法知晓哪些线程的数据尚未被处理完,从而导致数据处理失败。



技术实现要素:

本发明实施例提供一种基于多线程的数据处理方法及装置,用于优化数据库中数据的处理方式。

一种基于多线程的数据处理方法,包括以下步骤:

重启采用多线程处理数据的设备后,根据各线程对应的第一标志位判断重启之前是否存在未处理完数据的线程;

当确定重启之前存在未处理完数据的线程时,采用当前线程继续处理所述数据;

当确定重启之前不存在未处理完数据的线程时,重新创建预设数量个线程,所述预设数量个线程用于处理重启之后的新数据。

本发明实施例的一些有益效果可以包括:

采用本发明实施例提供的技术方案,能够在重启采用多线程处理数据的设备后,根据各线程对应的第一标志位判断重启之前是否存在未处理完数据的线程,并在确定重启之前存在未处理完数据的线程时采用当前线程继续处理数据,使得设备重启之后仍能继续处理重启之前尚未被处理完成的数据,从而避免因设备重启而中断数据处理、导致数据处理失败的情况。并且在确定重启之前不存在未处理完数据的线程时重新创建预设数量个线程,以处理重启之后的新数据,使得设备重启之后的新数据能够被及时处理,从而优化数据处理的整个流程。

在一个实施例中,所述根据各线程对应的第一标志位判断重启之前是否存在未处理完数据的线程,包括:

当所述线程对应的第一标志位为1时,确定该线程未处理完数据;

当所述线程对应的第一标志位为0时,确定该线程已处理完数据。

该实施例中,根据第一标志位为1或者为0来确定线程是否处理完数据,使得设备能够根据线程的第一标志位准确确定出重启之前是否存在未处理完数据的线程。

在一个实施例中,所述采用当前线程继续处理所述数据,包括:

获取内存中记录的活跃线程数,并判断所述活跃线程数是否为零,所述活跃线程数指当前正在处理数据的线程数目;

当所述活跃线程数为零时,重新创建线程作为当前线程处理所述数据;

当所述活跃线程数不为零时,将当前正在处理数据的线程作为当前线程继续处理所述数据。

该实施例中,通过在内存中记录的活跃线程数为零时重新创建线程作为当前线程来处理数据,并在活跃线程数不为零时将当前正在处理数据的线程作为当前线程继续处理数据,从而能够确保有线程继续处理未处理完的数据,优化了数据处理的整个流程。

在一个实施例中,所述采用当前线程继续处理所述数据之后,所述方法还包括:

当确定所述当前线程已处理完所述数据时,将所述活跃线程数更新为零,并重新创建所述预设数量个线程处理新数据。

该实施例中,能够在确定当前线程已处理完数据时,将活跃线程数更新为零,并重新创建预设数量个线程处理新数据,使得重启之后的新数据能够被及时处理。

在一个实施例中,所述方法还包括:

对指定分区对应的第二标志位进行标记,其中,当所述指定分区对应的其中一个线程处理完所述指定分区的数据时,将所述第二标志位加1;

当所述第二标志位等于所述指定分区对应的线程数目时,确定所述指定分区的数据已被处理完成,并对所述指定分区中的数据进行统计;

删除所述指定分区的第二标志位。

该实施例中,通过对指定分区对应的第二标志位进行标记,并在其中一个线程处理完指定分区的数据时,将该指定分区的第二标志位加1,且在第二标志位等于该指定分区对应的线程数目时,确定该指定分区的数据已被处理完成,对该指定分区中的数据进行统计,使得设备能够通过指定分区对应的第二标志位来确定指定分区中的数据是否处理完,从而使指定分区中已被处理完的数据能够被及时统计,提高了数据统计的效率。此外,本实施例在统计完指定分区中的数据之后删除该指定分区的第二标志位,即设备不再对该指定分区标记第二标志位,从而为设备提供指定分区中的数据已被统计完成的信息。

一种基于多线程的数据处理装置,其特征在于,包括:

判断模块,用于重启采用多线程处理数据的设备后,根据各线程对应的第一标志位判断重启之前是否存在未处理完数据的线程;

处理模块,用于当确定重启之前存在未处理完数据的线程时,采用当前线程继续处理所述数据;

创建模块,用于当确定重启之前不存在未处理完数据的线程时,重新创建预设数量个线程,所述预设数量个线程用于处理重启之后的新数据。

在一个实施例中,所述判断模块用于:

当所述线程对应的第一标志位为1时,确定该线程未处理完数据;

当所述线程对应的第一标志位为0时,确定该线程已处理完数据。

在一个实施例中,所述处理模块包括:

判断单元,用于获取内存中记录的活跃线程数,并判断所述活跃线程数是否为零,所述活跃线程数指当前正在处理数据的线程数目;

第一创建单元,用于当所述活跃线程数为零时,重新创建线程作为当前线程处理所述数据;

第二处理单元,用于当所述活跃线程数不为零时,将当前正在处理数据的线程作为当前线程继续处理所述数据。

在一个实施例中,所述装置还包括:

更新模块,用于当确定所述当前线程已处理完所述数据时,将所述活跃线程数更新为零,并重新创建所述预设数量个线程处理新数据。

在一个实施例中,所述装置还包括:

标记模块,用于对指定分区对应的第二标志位进行标记,其中,当所述指定分区对应的其中一个线程处理完所述指定分区的数据时,将所述第二标志位加1;

统计模块,用于当所述第二标志位等于所述指定分区对应的线程数目时,确定所述指定分区的数据已被处理完成,并对所述指定分区中的数据进行统计;

删除模块,用于删除所述指定分区的第二标志位。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明实施例中一种基于多线程的数据处理方法的流程图;

图2为本发明实施例中一种基于多线程的数据处理方法中步骤S12的流程图;

图3为本发明实施例中一种基于多线程的数据处理方法的流程图;

图4为本发明实施例中一种基于多线程的数据处理装置的框图;

图5为本发明实施例中一种基于多线程的数据处理装置中处理模块的框图;

图6为本发明实施例中一种基于多线程的数据处理装置的框图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图1为本发明实施例中一种基于多线程的数据处理方法的流程图。如图1所示,该方法包括以下步骤S11-S13:

步骤S11,重启采用多线程处理数据的设备后,根据各线程对应的第一标志位判断重启之前是否存在未处理完数据的线程。当确定重启之前存在未处理完数据的线程时,执行步骤S12;当确定重启之前不存在未处理完数据的线程时,执行步骤S13。

在一个实施例中,第一标志位采用0或1的方式来标记。例如,当某线程处理完数据时,其对应的第一标志位则为0,当某线程未处理完数据时,其对应的第一标志位则为1,因此,当线程对应的第一标志位为1时,确定该线程未处理完数据;当线程对应的第一标志位为0时,确定该线程已处理完数据。

步骤S12,采用当前线程继续处理数据。

步骤S13,重新创建预设数量个线程,预设数量个线程用于处理重启之后的新数据。

其中,预设数量为设备预先设定的线程数目。

采用本发明实施例提供的技术方案,能够在重启采用多线程处理数据的设备后,根据各线程对应的第一标志位判断重启之前是否存在未处理完数据的线程,并在确定重启之前存在未处理完数据的线程时采用当前线程继续处理数据,使得设备重启之后仍能继续处理重启之前尚未被处理完成的数据,从而避免因设备重启而中断数据处理、导致数据处理失败的情况。并且在确定重启之前不存在未处理完数据的线程时重新创建预设数量个线程,以处理重启之后的新数据,使得设备重启之后的新数据能够被及时处理,从而优化数据处理的整个流程。

在一个实施例中,内存中记录有活跃线程数,活跃线程数指当前正在处理数据的线程数目。并且,每当创建一个线程时,内存中的活跃线程数就会加1,且每当一个线程处理完数据时,活跃线程数就会减1。因此,步骤S12可执行为如图2所示的步骤S21-S23:

步骤S21,获取内存中记录的活跃线程数,并判断活跃线程数是否为零。当活跃线程数为零时,则执行步骤S22;当活跃线程数不为零时,则执行步骤S23。

步骤S22,重新创建线程作为当前线程处理数据。

执行步骤S22时,重新创建的线程数目应大于或等于设备重启之前未处理完数据的线程数目,例如,设备重启之前未处理完数据的线程数目为4,则重新创建4个线程作为当前线程处理数据。也可直接创建预设数量个线程作为当前线程处理数据,其中,预设数量为设备预先设定的线程数目。

步骤S23,将当前正在处理数据的线程作为当前线程继续处理数据。

该实施例中,通过在内存中记录的活跃线程数为零时重新创建线程作为当前线程来处理数据,并在活跃线程数不为零时将当前正在处理数据的线程作为当前线程继续处理数据,从而能够确保有线程继续处理未处理完的数据,优化了数据处理的整个流程。

在一个实施例中,采用当前线程继续处理数据之后,即执行步骤S12之后,上述方法还包括以下步骤:当确定当前线程已处理完数据时,将活跃线程数更新为零,并重新创建预设数量个线程处理新数据,其中,预设数量为设备预先设定的线程数目,新数据指设备重启之后产生的新数据。

该实施例中,能够在确定当前线程已处理完数据时,将活跃线程数更新为零,并重新创建预设数量个线程处理新数据,使得重启之后的新数据能够被及时处理。

在一个实施例中,上述方法还包括如图3所示的步骤S31-S33:

步骤S31,对指定分区对应的第二标志位进行标记,其中,当指定分区对应的其中一个线程处理完指定分区的数据时,将第二标志位加1。

步骤S32,当第二标志位等于指定分区对应的线程数目时,确定指定分区的数据已被处理完成,并对指定分区中的数据进行统计。

步骤S33,删除指定分区的第二标志位。

该实施例可应用于数据库中设有多个分区的场景,其中每个分区都对应有预设数量个线程用以处理各分区中的数据。例如,预设数量为9,则每个分区都对应有9个线程来处理各自分区中的数据。当有一个线程处理完指定分区的数据时,该指定分区对应的第二标志位为1,同理,当9个线程都处理完该指定分区的数据时,该指定分区对应的第二标志位为9。当第二标志位等于指定分区对应的线程数目(即预设数量9)时,说明9个线程均已处理完指定分区的数据,此时可对指定分区中的数据进行统计。

该实施例中,通过对指定分区对应的第二标志位进行标记,并在其中一个线程处理完指定分区的数据时,将该指定分区的第二标志位加1,且在第二标志位等于该指定分区对应的线程数目时,确定该指定分区的数据已被处理完成,对该指定分区中的数据进行统计,使得设备能够通过指定分区对应的第二标志位来确定指定分区中的数据是否处理完,从而使指定分区中已被处理完的数据能够被及时统计,提高了数据统计的效率。此外,本实施例在统计完指定分区中的数据之后删除该指定分区的第二标志位,即设备不再对该指定分区标记第二标志位,从而为设备提供指定分区中的数据已被统计完成的信息。

图4为本发明实施例中一种基于多线程的数据处理装置的框图。如图4所示,该装置包括:

判断模块41,用于重启采用多线程处理数据的设备后,根据各线程对应的第一标志位判断重启之前是否存在未处理完数据的线程;

处理模块42,用于当确定重启之前存在未处理完数据的线程时,采用当前线程继续处理数据;

创建模块43,用于当确定重启之前不存在未处理完数据的线程时,重新创建预设数量个线程,预设数量个线程用于处理重启之后的新数据。

在一个实施例中,判断模块41还用于:

当线程对应的第一标志位为1时,确定该线程未处理完数据;

当线程对应的第一标志位为0时,确定该线程已处理完数据。

在一个实施例中,如图5所示,处理模块42包括:

判断单元421,用于获取内存中记录的活跃线程数,并判断活跃线程数是否为零,活跃线程数指当前正在处理数据的线程数目;

第一创建单元422,用于当活跃线程数为零时,重新创建线程作为当前线程处理数据;

第二处理单元423,用于当活跃线程数不为零时,将当前正在处理数据的线程作为当前线程继续处理数据。

在一个实施例中,上述装置还包括:

更新模块,用于当确定当前线程已处理完数据时,将活跃线程数更新为零,并重新创建预设数量个线程处理新数据。

在一个实施例中,如图6所示,上述装置还包括:

标记模块44,用于对指定分区对应的第二标志位进行标记,其中,当指定分区对应的其中一个线程处理完指定分区的数据时,将第二标志位加1;

统计模块45,用于当第二标志位等于指定分区对应的线程数目时,确定指定分区的数据已被处理完成,并对指定分区中的数据进行统计;

删除模块46,用于删除指定分区的第二标志位。

采用本发明实施例提供的装置,能够在重启采用多线程处理数据的设备后,根据各线程对应的第一标志位判断重启之前是否存在未处理完数据的线程,并在确定重启之前存在未处理完数据的线程时采用当前线程继续处理数据,使得设备重启之后仍能继续处理重启之前尚未被处理完成的数据,从而避免因设备重启而中断数据处理、导致数据处理失败的情况。并且在确定重启之前不存在未处理完数据的线程时重新创建预设数量个线程,以处理重启之后的新数据,使得设备重启之后的新数据能够被及时处理,从而优化数据处理的整个流程。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1