CN107451046B - 一种检测线程的方法及终端 - Google Patents

一种检测线程的方法及终端 Download PDF

Info

Publication number
CN107451046B
CN107451046B CN201610375434.9A CN201610375434A CN107451046B CN 107451046 B CN107451046 B CN 107451046B CN 201610375434 A CN201610375434 A CN 201610375434A CN 107451046 B CN107451046 B CN 107451046B
Authority
CN
China
Prior art keywords
thread
feedback information
abnormal
terminal
unit
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.)
Active
Application number
CN201610375434.9A
Other languages
English (en)
Other versions
CN107451046A (zh
Inventor
余颖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201610375434.9A priority Critical patent/CN107451046B/zh
Publication of CN107451046A publication Critical patent/CN107451046A/zh
Application granted granted Critical
Publication of CN107451046B publication Critical patent/CN107451046B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了一种检测线程的方法及终端,用于减少终端资源的浪费。本发明实施例方法包括:终端获取线程参数,线程参数为线程的执行对象,根据线程参数运行线程,当检测到线程产生异常时,获取线程的异常反馈信息,异常反馈信息包括线程产生异常的原因,输出异常反馈信息,并根据异常反馈信息调整线程参数,根据调整后的线程参数运行线程。这样,终端在运行线程时,当线程产生异常时,将该异常的原因通过异常反馈信息返回给终端,终端则将该异常反馈信息输出给终端用户,并且终端根据异常反馈信息调整线程参数,再以调整后的线程参数运行该进程,避免了终端用户多次通过错误的线程参数运行该线程,造成终端资源的浪费。

Description

一种检测线程的方法及终端
技术领域
本发明涉及终端领域,尤其涉及一种检测线程的方法及终端。
背景技术
线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。线程的在运行时并不能百分之百保证成功,可能出现各种各样的错误或者异常,当发生错误或者异常时,通常的处理方式是通过在线程里捕获异常记录日志,退出线程。
不同编程语言的线程的处理模式不一样,比如C语言线程、C++语言线程以及Python语言线程,三者的线程返回处理模式并不相同。其中Python语言线程的处理是个“黑盒子”,现有技术中,当Python语言线程出现异常时,通常会在该线程可能出现异常的任何位置捕获异常,将捕获到的异常信息进行日志记录,而该异常线程则会进入“黑盒子”不会产生返回值。从而终端用户无法知道该线程的运行为何没有得到应有的返回结果。而对于具体的异常原因,需要技术开发人员在后台数据库中查找日志进行人工分析,这样导致终端用户无法获知线程异常的具体原因,若终端用户重复运行该线程,依旧无法获取应有的返回结果,从而造成的终端资源的浪费。
发明内容
本发明实施例提供了一种检测线程的方法及终端,用于减少终端资源的浪费。
本发明实施例第一方面提供一种检测线程的方法,包括:
获取线程参数,所述线程参数为线程的执行对象;
根据所述线程参数运行所述线程;
当检测到所述线程产生异常时,获取所述线程的异常反馈信息,所述异常反馈信息包括所述线程产生异常的原因;
输出所述异常反馈信息;
根据所述异常反馈信息调整所述线程参数;
根据所述调整后的线程参数运行所述线程。
本发明实施例第二方面提供一种终端,包括:
获取单元,用于获取线程参数,所述线程参数为线程的执行对象;
运行单元,用于根据所述线程参数运行所述线程;
所述获取单元还用于,当检测到所述线程产生异常时,获取所述线程的异常反馈信息,所述异常反馈信息包括所述线程产生异常的原因;
输出单元,用于输出所述异常反馈信息;
调整单元,用于在所述获取单元获取所述线程的异常反馈信息之后,根据所述异常反馈信息调整所述线程参数;
所述运行单元还用于,根据所述调整后的线程参数运行所述线程。
从以上技术方案可以看出,本发明实施例具有以下优点:本发明实施例中,终端获取线程参数,所述线程参数为线程的执行对象,根据所述线程参数运行所述线程,当检测到所述线程产生异常时,获取所述线程的异常反馈信息,所述异常反馈信息包括所述线程产生异常的原因,输出所述异常反馈信息,并根据所述异常反馈信息调整所述线程参数,根据所述调整后的线程参数运行所述线程。这样,终端在运行线程时,实时监控线程的运行状态,当线程产生异常时,将该异常的原因通过异常反馈信息返回给终端,终端则将该异常反馈信息输出给终端用户,使得终端用户能够获知线程产生异常的具体原因,并且终端根据异常反馈信息调整线程参数,再以调整后的线程参数运行该进程,避免了终端用户多次通过错误的线程参数运行该线程,造成终端资源的浪费。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中检测线程的方法的一个实施例示意图;
图2为本发明实施例中检测线程的方法的另一实施例示意图;
图3为本发明实施例中检测线程的方法的另一实施例示意图;
图4为本发明实施例中检测线程的方法的具体应用场景的的一个流程示意图;
图5为本发明实施例中终端的一个实施例示意图;
图6为本发明实施例中终端的另一实施例示意图;
图7为本发明实施例中终端的另一实施例示意图;
图8为本发明实施例中终端的另一实施例示意图。
具体实施方式
本发明实施例提供了一种检测线程的方法及终端,用于终端获取线程产生异常的原因,避免终端资源的浪费。
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
参照图1所示,本发明实施例中检测线程的方法的一个实施例包括:
101、获取线程参数,所述线程参数为线程的执行对象;
线程,作为程序执行流的最小单元,在被运行之后,往往会得到一个执行结果并输出该执行结果呈现给终端用户,比如运行一次线程可以生成一个报表。而终端在运行线程之前,先要获取该线程的线程参数,该线程参数可以包括需要得到的执行结果的类型,比如该线程为用于建立报表的线程,而具体建立得到的报表包括树状报表、方框报表、以及图形报表等,而线程参数则能够指示出用户需要建立的报表类型,因此,终端在运行线程之前,先获取该线程参数,以该线程参数作为线程的执行对象,从而使得该线程的执行结果为终端用户所需要的结果。需要说明的是,线程参数不仅限于上述的线程执行结果的类型,还可以包括终端用户想要对线程进行了其它自定义的操作,以及该线程连接入数据库的用户名和密码等相关参数,具体不做限定。
具体获取该线程参数的方式可以包括两种:一种是人工输入,另一种是从参数列表中获取。
102、根据所述线程参数运行所述线程;
终端在获取到线程参数后,将该线程参数输入至该线程内,线程通过变量接收该线程参数,并且以该变量值,即接收到线程参数调度到对应的函数模块内运行。线程可以包括多个函数模块,每个函数模块实现不同的功能,比如用于连接数据库的函数模块、用于执行结构化查询语言(Structured Query Language)SQL语句的函数模块、用于对终端用户进行权限验证的函数模块、用于对连接数据源的函数模块、用于获取运行结果的函数模块、用于历史记录查询的函数模块等。各个函数模块可以通过嵌套或循环调用等方式进行连接,该线程参数也可以根据类型的不同被调用到不同的函数模块执行。
103、当检测到所述线程产生异常时,获取所述线程的异常反馈信息,所述异常反馈信息包括所述线程产生异常的原因;
线程在运行的过程中,并不能保证百分之百运行成功,由于各种不定因素的原因,可能会导致线程产生异常。具体导致线程产生异常的原因包括三类,第一类线程异常产生的原因是终端硬件上的缺陷导致的。比如终端内存不足,导致该线程程序不完整,因此在运行的过程中产生异常。这种异常原因只能通过提高终端的硬件配置或者减少线程的占用内存的方式进行解决。第二类程异常产生的原因是线程的程序本身有BUG导致的。线程开发人员在编程时可能会未考虑得绝对全面,导致线程的程序本身存在BUG,比如线程的函数之间的调用逻辑问题,或者是线程对所执行的线程参数设置的范围值等问题,均有可能导致线程出现异常。这种异常原因只能由技术人员对线程的程序代码进行调整测试,修复线程BUG的方式进行解决。第三类程异常产生的原因是终端用户的配置不当导致的。比如终端用户所输入的SQL语句存在语法错误,从而导致线程无法正常运行;或者,终端用户所使用的权限超出了线程所允许的预设权限,从而导致线程无法正常运行;或者,在连接数据库时用户名和密码错误,从而导致线程无法正常运行;或者线程所需要调用的数据源的接口被更改或者错误,从而导致线程无法正常运行等等原因,均会导致线程产生异常。而关于第三类异常产生的原因,终端用户可以通过自行调整进行解决,因此,在本发明实施例中,终端在检测到线程出现异常时,则获取该线程的异常反馈信息,具体可以在线程的各个函数模块内添加异常信息获取函数,获取线程的异常原因,若该函数被调用,则表示该线程出现异常,该函数则会将将获取到的异常原因输入至异常反馈信息中,并反馈给终端;或者,终端可以设置独立于该线程的捕捉线程程序专门用于捕获该线程的异常原因。
104、输出所述异常反馈信息;
当终端获取到异常反馈信息后,则将该异常反馈信息进行输出。具体可以为通过提示框的形式输出到用户操作界面,方面终端用户查看异常原因并进行分析。比如通过提示框输出“运行异常,数据库连接失败,用户名不正确”,这样,终端用户则能够获知该线程未能运行完毕,无法得到应有的运行结果,且该线程产生异常的原因是因为连接数据库的用户名有误。
不同于现有技术的只进行异常日志记录,并吞没该线程,无返回结果,本发明实施例中,终端在检测到线程产生异常的原因时,获取该线程的异常反馈信息,该异常反馈信息则用于指示线程产生异常的原因,并将该异常反馈信息输出,提供终端用户查阅,使得终端用户能够获知到线程产生异常的具体原因,从而可以通过自行调整或者其它智能调整等方式解决该线程的异常。
105、根据所述异常反馈信息调整目标线程参数;
终端在获取异常反馈信息后,可以结合该异常反馈信息进行智能判断,若该异常反馈信息指示异常的原因为线程参数设置不当导致的,则根据该异常反馈信息对线程参数进行相应的调整。比如异常反馈信息中指示输入的连接数据库的用户名有误,终端则重新获取连接数据库的用户名,并将该用户名作为新的线程参数进行调整。
106、根据所述调整后的目标线程参数运行所述目标线程;
终端在根据异常反馈信息对线程参数进行调整后,则可以根据调整后的线程参数对线程进行重新运行,使得提高线程运行的成功率。
本发明实施例中,终端获取线程参数,所述线程参数为线程的执行对象,根据所述线程参数运行所述线程,当检测到所述线程产生异常时,获取所述线程的异常反馈信息,所述异常反馈信息包括所述线程产生异常的原因,输出所述异常反馈信息,并根据所述异常反馈信息调整所述线程参数,根据所述调整后的线程参数运行所述线程。这样,终端在运行线程时,实时监控线程的运行状态,当线程产生异常时,将该异常的原因通过异常反馈信息返回给终端,终端则将该异常反馈信息输出给终端用户,使得终端用户能够获知线程产生异常的具体原因,并且终端根据异常反馈信息调整线程参数,再以调整后的线程参数运行该进程,避免了终端用户多次通过错误的线程参数运行该线程,造成终端资源的浪费。
参照图2所示,本发明实施例中检测线程的方法的另一实施例包括:
201、获取至少两个线程各自对应的线程参数;
图1实施例中描述了终端获取线程参数,并以获取到的线程参数作为线程的运行对象,根据该线程参数运行线程。而在实际应用中,终端可以实现多线程的同时运行,即可以同时执行至少两个线程,从而得到不同的线程运行结果。比如终端用户可以同时运行三个线程分别用于建立树状报表、方框报表以及图形报表。与步骤101所描述的内容类似,终端在运行至少两个线程之前,需要先获取所述至少两个线程各自对应的线程参数。
202、根据获取到的各线程参数同时运行对应的线程;
与步骤102所描述的内容类似,终端获取到至少两个线程参数后,则根据各线程参数同时运行对应的线程。需要说明的是,至少两个线程参数中可以包括被多个线程同时共用的线程参数。比如用于连接数据库的用户名和密码参数,或者用于连接数据源的数据源接口参数,均可以被多个线程同时共用。多个线程之间的函数模块也可以共用或者独立使用,具体不做限定。
可选地,本发明实施例中,还可以包括步骤203。
203、为各线程分别设置识别标识;
在某些特定的应用场景中,比如线程为Python语言线程,而Python语言线程的处理是个“黑盒子”,线程执行的返回是乱序的,也就是说并不是按执行进入的顺序返回结果。比如终端同时运行三个Python语言线程,若终端处理器运行线程的顺序是1,2,3时,而由于线程的复杂度不相同,有可能返回结果的顺序是3,2,1或者2,3,1等乱序。所以终端用户无法得知具体是具体的线程返回结果顺序。因此,在本发明实施例中,当终端同时运行多个线程时,为各线程分别设置识别标识,设置识别标识的步骤可以是在运行多个线程之前,也可以是在运行多个线程之后,在多个线程进入“黑盒子”之前,各线程在返回结果中包含各自的识别标识,这样通过查看返回结果的识别标识就能对返回结果的顺序进行辨认。该识别标识可以为数字标签ID,也可以为其它字符标签,或者是具体的线程名称,具体不做限定。
204、当检测到所述线程中的目标线程发生异常时,获取所述目标线程的异常反馈信息,所述异常反馈信息包括所述目标线程产生异常的原因以及所述目标线程对应的识别标识;
在多线程同时运行过程中,并非所有的线程都会产生异常,在本发明实施例中,当同时运行的多个线程中某一个或多个线程产生异常时,终端则获取产生异常的一个或多个线程的异常反馈信息,而该异常反馈信息中,携带有异常线程对应的识别标识,便于终端用户获知具体是哪一个或哪几个线程产生异常。
在实际应用中,线程的向终端的反馈异常的返回值可以设置为变量“message”,该“message”可初始化为“success”,若线程在退出时该信息一直未被改写,则表示线程执行成功,同时返回线程对应的识别标识和线程执行结果,其中识别标识和“message”一直跟随线程从函数的进入到退出。返回的结果中识别标识用于指示该线程的身份,“message”的值用于指示该线程执行成功与否,成功为“success”。而当线程产生异常时,该“message”的值则会被改写,被赋予线程产生异常的具体原因以及错误信息,而执行的结果若用“data”列表来表示,则“data”的结果列表则为初始化的空列表。
205、输出所述异常反馈信息;
详细内容参照步骤104所述。
206、根据所述异常反馈信息调整目标线程参数;
详细内容参照步骤105所述。
207、根据所述调整后的目标线程参数运行所述目标线程;
详细内容参照步骤106所述。
本发明实施例中,当终端同时运行至少两个线程时,为每个线程设置识别标识,各个线程所对应的识别标识随着线程的返回结果反馈给终端,使得终端用户或者具体是哪个或哪几个线程产生异常,从而能够进行相应的针对性调整,提高了终端运行多个线程的效率。
参照图3所示,本发明实施例中检测线程的方法的另一实施例包括:
301、获取至少两个线程各自对应的线程参数;
详细内容参照步骤201所述。
302、根据获取到的各线程参数同时运行对应的线程;
详细内容参照步骤202所述。
303、为各线程分别设置识别标识;
详细内容参照步骤203所述。
304、检测每个线程中预设模块节点的运行状态;
在线程中,有几个模块可能会经常产生异常,比如数据库连接层这个模块,权限验证层这个模块,SQL执行层这个模块,数据源连接层这个模块等,终端对这些可能经常产生异常的模块进行针对性检测,从而获取线程中具体产生异常的模块。
305、若所述至少线程中的目标线程的一个或多个模块节点运行错误,则确定所述线程产生异常;
线程产生异常的原因可以根据线程具体单个模块的运行结果中进行判断,比如终端在检测数据库连接状态时,若连接数据库失败,线程则无法继续运行,从而产生异常,比如终端用户所使用的连接数据库的用户名或密码出现错误,则会导致连接数据库失败。或者,终端检测终端的权限,若所述终端的权限超过预设权限,则确定所述线程产生异常。比如,该线程出于安全考虑,连接数据库的帐号只能拥有select权限,所以终端用户权限有且只能仅有select权限,若终端用户拥有root权限,则可能由于终端用户的不当操作,对线程的程序本身进行了修改,从而可能导致系统崩溃等危险,因此,不允许终端用户账号拥有超过select权限更高的权限。或者,终端检测结构化语言SQL的执行状态,若所述SQL执行失败,则确定所述线程产生异常。比如终端用户所输入的SQL语句存在语法错误,则会导致SQL语句执行失败。或者,终端检测数据源接口连接状态,若连接数据源接口失败,则确定所述线程产生异常。比如该线程在运行时,需要调用一些其它系统的数据,而其它系统为一个不确定因素,其它系统的与该线程连接的数据源接口可能被更改,而该线程并未获知,从而导致连接数据源失败。
306、从所述目标线程中运行错误的模块节点获取异常反馈信息,所述异常反馈信息包括所述模块节点运行错误的原因以及所述目标线程对应的识别标识;
终端检测到线程具体哪个模块产生异常,则从具体产生异常的模块获取异常反馈信息,而该异常反馈信息则包括了该异常模块产生异常的原因。比如从数据库连接层获取数据库连接失败的原因;或者,从权限验证层获取终端权限超过预设权限的原因;或者SQL语句层获取执行SQL语句失败的原因;执行或者从数据源连接层获取连接数据源接口失败的原因。
可选的,终端在检测到线程产生异常,并获取异常反馈信息后,则可以终止线程的运行,即退出该线程。
需要说明的是,在实际应用中,线程还还另外一些模块也可能会产生异常,比如记录查询历史模块,但是由于该模块的重要性较低,及时该模块产生异常,也并不影响终端用于对线程的主要结果的获知,因此,若这类模块产生异常,终端可以只获取异常反馈信息,而不终止该线程,使得该线程继续运行,直到运行结束。
307、输出所述异常反馈信息;
详细内容参照步骤205所述。
308、根据所述异常反馈信息调整目标线程参数;
终端在获取异常反馈信息后,可以结合该异常反馈信息进行智能判断,若该异常反馈信息指示异常的原因为线程参数设置不当导致的,则根据该异常反馈信息对线程参数进行相应的调整。比如异常反馈信息中指示输入的连接数据库的用户名有误,终端则重新获取连接数据库的用户名,并将该用户名作为新的线程参数进行调整。
309、根据所述调整后的目标线程参数运行所述目标线程;
终端在根据异常反馈信息对线程参数进行调整后,则可以根据调整后的线程参数对线程进行重新运行,使得提高线程运行的成功率。
本发明实施例中,终端正对性地对线程可能常产生异常的模块进行检测,从而能够从线程具体的模块获取线程产生异常的原因,使得异常反馈信息中的异常原因更为具体,便于终端用户对线程产生异常后的分析与调整维护等。也使得终端在获取到异常反馈信息后,根据异常反馈信息对线程参数进行相应调整,由于该异常反馈信息中的异常原因为该线程中具体某个模块节点的异常原因,因此终端对线程参数的调整更具有针对性,从而根据调整后的线程参数重新运行该线程,提高了线程运行的成功率,同时提高了终端资源的利用率。
参照图4所示,下面通过一个具体应用场景实施例对对发明进行阐述:
在一个用于建立报表的线程中,终端从参数列表中获取到线程参数,该线程参数包括连接数据库的用户名和密码、待执行的SQL语句,该参数列表里还可以包括终端为该线程设置的识别标识ID以及变量“message”;终端根据该线程参数循环进入线程,并将该线程参数作为所对应的线程各函数的入参,识别标识ID唯一标识所述线程,线程内设置变量“message”,并初始化为“success”,该“message”变量用于指示线程的运行是否成功,当线程退出时该变量信息一直未被改写,表示线程执行成功,同时返回线程的识别标识ID和线程执行结果data的值。如果线程的运行过程中产生异常,变量“message”将被重新赋值,该赋值为线程产生异常的具体原因或错误信息,线程将该“message”的赋值以及识别标识ID和data返回给终端,并退出线程,由于线程未能运行完毕,所以data的赋值可能为初始值,即结果列表data为空,data=[]。
从图4中可以看出,在每一个标有异常点的模块都有可能产生异常,其中,
连接数据库:很有可能是用户数据源配置不正确,如中途进行过密码修改或者数据库授权不正确等造成的,如出现以上情况,则会导致连接数据库失败,产生异常。
权限验证:一般开发平台出于安全考虑连接数据库的终端用户帐号只能拥有select权限,所以用户权限有且只能仅有select权限,若该终端用户账号拥有root权限,则会产生异常。
执行SQL查询:终端用户配置的SQL语句语法错误等,若终端用户所配置的SQL语句出现语法错误,则会导致执行SQL语句失败,从而产生异常。
连接数据源:接口失常或者由接口变更引起的问题。
以上各个模块节点产生异常都会使线程无法继续完成剩余的流程而自行退出,线程无法返回结果。但是在本发明实施例中,由于终端为线程设置了变量“message”,而当线程产生异常时,会将异常原因保存在变量“message”中,然后进行自动异常抛出,如果不是函数最上层的异常处理都采取记录message并向上一层抛出,这样层层抛出,直到线程的最后一层异常处理将识别标识ID、“message”(这时的message描述线程出错的具体原因)和空数据data组合起来作为线程的返回,这样就成功解决了终端用户需要知道线程出错具体原因的问题。
另要说明的是,该线程中而记录查询历史这个模块节点也可能会产生异常,比如查询失败,但是该异常并不会导致程序无法向后执行,所以对于该异常模块节点,可以只做简单记录信息到日志里,并不进行异常抛出退出线程,这个异常错误信息并非终端用户关心错误信息,且不影响线程的运行结果。
参照图5所示,本发明实施例中终端的一个实施例包括:
获取单元401,用于获取线程参数,所述线程参数为线程的执行对象;
详细内容参照步骤101所述。
运行单元402,用于根据所述线程参数运行所述线程;
详细内容参照步骤102所述。
所述获取单元401还用于,当检测到所述线程产生异常时,获取所述线程的异常反馈信息,所述异常反馈信息包括所述线程产生异常的原因;
详细内容参照步骤103所述。
输出单元403,用于输出所述异常反馈信息。
详细内容参照步骤104所述。
调整单元404,用于在所述获取单元获取所述线程的异常反馈信息之后,根据所述异常反馈信息调整所述线程参数;
详细内容参照步骤105所述。
所述运行单元402还用于,根据所述调整后的线程参数运行所述线程。
详细内容参照步骤106所述。
参照图6所示,本发明实施例中终端的另一实施例包括:
获取单元501,用于获取至少两个线程各自对应的线程参数;
详细内容参照步骤201所述。
运行单元502,用于根据获取到的各线程参数同时运行对应的线程;
详细内容参照步骤202所述。
设置单元503,用于在所述运行单元502根据各线程参数同时运行对应的线程之后,为各线程分别设置识别标识;
详细内容参照步骤203所述。
可选的,所述设置单元为各线程分别设置识别标识也可以在所述运行单元根据各线程参数同时运行对应的线程之前。
所述获取单元501还用于,当检测到所述线程中的目标线程发生异常时,获取所述目标线程的异常反馈信息,所述异常反馈信息包括所述目标线程产生异常的原因以及所述目标线程对应的识别标识;
详细内容参照步骤204所述。
输出单元504,用于输出所述异常反馈信息。
详细内容参照步骤205所述。
调整单元505,用于在所述获取单元获取所述线程的异常反馈信息之后,根据所述异常反馈信息调整所述线程参数;
详细内容参照步骤206所述。
所述运行单元502还用于,根据所述调整后的线程参数运行所述线程。
详细内容参照步骤207所述。
参照图7所示,本发明实施例中终端的另一实施例包括:
获取单元601,用于获取至少两个线程各自对应的线程参数;
详细内容参照步骤301所述。
运行单元602,用于根据获取到的各线程参数同时运行对应的线程;
详细内容参照步骤302所述。
设置单元603,用于在所述运行单元602根据各线程参数同时运行对应的线程之后,为各线程分别设置识别标识;
详细内容参照步骤303所述。
可选的,所述设置单元603为各线程分别设置识别标识也可以在所述运行单元602根据各线程参数同时运行对应的线程之前。
检测单元604,用于在所述运行单元602根据线程参数运行所述线程之后,检测数据库连接状态;
可选的,所述检测单元604还用于检测终端的权限;
可选的,所述检测单元604还用于检测结构化语言SQL的执行状态;
可选的,所述检测单元604还用于检测数据源接口连接状态。
详细内容参照步骤304所述。
确定单元605,用于在连接数据库失败时,确定所述线程产生异常;
可选的,所述确定单元605还用于在所述终端的权限超过预设权限时,确定所述线程产生异常;
可选的,所述确定单元605还用于在所述SQL执行失败,确定所述线程产生异常;
可选的,所述确定单元605还用于在连接数据源接口失败时,确定所述线程产生异常;
详细内容参照步骤305所述。
所述获取单元601还用于,从所述线程的数据库连接层获取异常反馈信息,所述异常反馈信息包括连接数据库失败的原因;
可选的,所述获取单元601还用于从所述线程的权限验证层获取异常反馈信息,所述异常反馈信息包括终端权限超过预设权限的原因;
可选的,所述获取单元601还用于从所述线程的SQL执行层获取异常反馈信息,所述异常反馈信息包括所执行的SQL语句错误的原因;
可选的,所述获取单元601还用于从所述线程的数据源连接层获取异常反馈信息,所述异常反馈信息包括连接数据源接口失败的原因。
详细内容参照步骤306所述。
输出单元606,用于输出所述异常反馈信息。
详细内容参照步骤307所述。
调整单元607,用于在所述获取单元获取所述线程的异常反馈信息之后,根据所述异常反馈信息调整所述线程参数;
详细内容参照步骤308所述。
所述运行单元602还用于,根据所述调整后的线程参数运行所述线程。
详细内容参照步骤309所述。
本发明实施例还提供了另一种终端,如图8所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point ofSales,销售终端)、车载电脑等任意终端设备,以终端为手机为例:
图8示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图8,手机包括:射频(Radio Frequency,RF)电路710、存储器720、输入单元730、显示单元740、传感器750、音频电路760、无线保真(wireless fidelity,WiFi)模块770、处理器780、以及电源790等部件。本领域技术人员可以理解,图8中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图8对手机的各个构成部件进行具体的介绍:
RF电路710可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器780处理;另外,将设计上行的数据发送给基站。通常,RF电路710包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier,LNA)、双工器等。此外,RF电路710还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GlobalSystem of Mobile communication,GSM)、通用分组无线服务(General Packet RadioService,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器720可用于存储软件程序以及模块,处理器780通过运行存储在存储器720的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器720可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元730可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元730可包括触控面板731以及其他输入设备732。触控面板731,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板731上或在触控面板731附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板731可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器780,并能接收处理器780发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板731。除了触控面板731,输入单元730还可以包括其他输入设备732。具体地,其他输入设备732可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元740可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元740可包括显示面板741,可选的,可以采用液晶显示器(Liquid CrystalDisplay,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板741。进一步的,触控面板731可覆盖显示面板741,当触控面板731检测到在其上或附近的触摸操作后,传送给处理器780以确定触摸事件的类型,随后处理器780根据触摸事件的类型在显示面板741上提供相应的视觉输出。虽然在图8中,触控面板731与显示面板741是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板731与显示面板741集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器750,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板741的亮度,接近传感器可在手机移动到耳边时,关闭显示面板741和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路760、扬声器761,传声器762可提供用户与手机之间的音频接口。音频电路760可将接收到的音频数据转换后的电信号,传输到扬声器761,由扬声器761转换为声音信号输出;另一方面,传声器762将收集的声音信号转换为电信号,由音频电路760接收后转换为音频数据,再将音频数据输出处理器780处理后,经RF电路710以发送给比如另一手机,或者将音频数据输出至存储器720以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块770可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图8示出了WiFi模块770,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器780是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器720内的软件程序和/或模块,以及调用存储在存储器720内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器780可包括一个或多个处理单元;优选的,处理器780可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器780中。
手机还包括给各个部件供电的电源790(比如电池),优选的,电源可以通过电源管理系统与处理器780逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本发明实施例中,该终端所包括的处理器780还具有以下功能:所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (16)

1.一种检测线程的方法,其特征在于,所述方法包括:
获取线程参数,所述线程参数为线程的执行对象;
根据所述线程参数运行所述线程;
当检测到所述线程产生异常时,获取所述线程的异常反馈信息,所述异常反馈信息包括所述线程产生异常的原因;
输出所述异常反馈信息,其中包括:将所述异常反馈信息保存在为所述线程所设置的变量中,将所述变量作为线程的返回,输出至用户操作界面;所述异常反馈信息包括所述线程对应的识别标识;
根据所述异常反馈信息调整所述线程参数;
根据所述调整后的线程参数运行所述线程。
2.根据权利要求1所述的方法,其特征在于,所述线程包括至少两个线程;
所述获取线程参数包括:
获取各线程对应的线程参数;
所述根据线程参数运行所述线程包括:
根据获取到的各线程参数同时运行对应的线程。
3.根据权利要求2所述的方法,其特征在于,在所述根据各线程参数同时运行对应的线程之后,所述方法还包括:
为各线程分别设置识别标识;
所述当检测到所述线程产生异常时,获取所述线程的异常反馈信息包括:
当检测到所述线程中的目标线程发生异常时,获取所述目标线程的异常反馈信息,所述异常反馈信息包括所述目标线程产生异常的原因以及所述目标线程对应的识别标识。
4.根据权利要求2所述的方法,其特征在于,在所述根据线程参数运行所述线程之后,所述方法还包括:
检测数据库连接状态;
若连接数据库失败,则确定所述线程产生异常;
所述获取所述线程的异常反馈信息包括:
从所述线程的数据库连接层获取异常反馈信息,所述异常反馈信息包括连接数据库失败的原因。
5.根据权利要求3所述的方法,其特征在于,在所述根据线程参数运行所述线程之后,所述方法还包括:
检测终端的权限;
若所述终端的权限超过预设权限,则确定所述线程产生异常;
所述获取所述线程的异常反馈信息包括:
从所述线程的权限验证层获取异常反馈信息,所述异常反馈信息包括终端权限超过预设权限的原因。
6.根据权利要求3所述的方法,其特征在于,在所述根据线程参数运行所述线程之后,所述方法还包括:
检测结构化语言SQL的执行状态;
若所述SQL执行失败,则确定所述线程产生异常;
所述获取所述线程的异常反馈信息包括:
从所述线程的SQL执行层获取异常反馈信息,所述异常反馈信息包括所执行的SQL语句错误的原因。
7.根据权利要求1至3其中任意一项所述的方法,其特征在于,在所述根据线程参数运行所述线程之后,所述方法还包括:
检测数据源接口连接状态;
若连接数据源接口失败,则确定所述线程产生异常;
所述获取所述线程的异常反馈信息包括:
从所述线程的数据源连接层获取异常反馈信息,所述异常反馈信息包括连接数据源接口失败的原因。
8.一种终端,其特征在于,所述终端包括:
获取单元,用于获取线程参数,所述线程参数为线程的执行对象;
运行单元,用于根据所述线程参数运行所述线程;
所述获取单元还用于,当检测到所述线程产生异常时,获取所述线程的异常反馈信息,所述异常反馈信息包括所述线程产生异常的原因;
输出单元,用于输出所述异常反馈信息,其中包括:将所述异常反馈信息保存在为所述线程所设置的变量中,将所述变量作为线程的返回,输出至用户操作界面;所述异常反馈信息包括所述线程对应的识别标识;
调整单元,用于在所述获取单元获取所述线程的异常反馈信息之后,根据所述异常反馈信息调整所述线程参数;
所述运行单元还用于,根据所述调整后的线程参数运行所述线程。
9.根据权利要求8所述的终端,其特征在于,所述线程包括至少两个线程;
所述获取单元具体用于:
获取各线程对应的线程参数;
所述运行单元具体用于:
根据获取到的各线程参数同时运行对应的线程。
10.根据权利要求9所述的终端,其特征在于,所述终端还包括:
设置单元,用于在所述运行单元根据各线程参数同时运行对应的线程之后,为各线程分别设置识别标识;
所述获取单元具体还用于:
当检测到所述线程中的目标线程发生异常时,获取所述目标线程的异常反馈信息,所述异常反馈信息包括所述目标线程产生异常的原因以及所述目标线程对应的识别标识。
11.根据权利要求9所述的终端,其特征在于,所述终端还包括:
检测单元,用于在所述运行单元根据线程参数运行所述线程之后,检测数据库连接状态;
确定单元,用于在连接数据库失败时,确定所述线程产生异常;
所述获取单元具体还用于:
从所述线程的数据库连接层获取异常反馈信息,所述异常反馈信息包括连接数据库失败的原因。
12.根据权利要求10所述的终端,其特征在于,所述终端还包括:
检测单元,用于在所述运行单元根据线程参数运行所述线程之后,检测终端的权限;
确定单元,用于在所述终端的权限超过预设权限时,确定所述线程产生异常;
所述获取单元具体还用于:
从所述线程的权限验证层获取异常反馈信息,所述异常反馈信息包括终端权限超过预设权限的原因。
13.根据权利要求10所述的终端,其特征在于,所述终端还包括:
检测单元,用于在所述运行单元根据线程参数运行所述线程之后,检测结构化语言SQL的执行状态;
确定单元,用于在所述SQL执行失败,确定所述线程产生异常;
所述获取单元具体还用于:
从所述线程的SQL执行层获取异常反馈信息,所述异常反馈信息包括所执行的SQL语句错误的原因。
14.根据权利要求8至10其中任意一项所述的终端,其特征在于,所述终端还包括:
检测单元,用于在所述运行单元根据线程参数运行所述线程之后,检测数据源接口连接状态;
确定单元,用于在连接数据源接口失败时,确定所述线程产生异常;
所述获取单元具体还用于:
从所述线程的数据源连接层获取异常反馈信息,所述异常反馈信息包括连接数据源接口失败的原因。
15.一种终端,其特征在于,包括存储器与处理器;
所述存储器用于存储软件程序;
所述处理器用于通过运行所述软件程序,以执行如权利要求1~7任一项所述的检测线程的方法的步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序,所述程序用于使计算机设备执行如权利要求1~7任一项所述的检测线程的方法的步骤。
CN201610375434.9A 2016-05-30 2016-05-30 一种检测线程的方法及终端 Active CN107451046B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610375434.9A CN107451046B (zh) 2016-05-30 2016-05-30 一种检测线程的方法及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610375434.9A CN107451046B (zh) 2016-05-30 2016-05-30 一种检测线程的方法及终端

Publications (2)

Publication Number Publication Date
CN107451046A CN107451046A (zh) 2017-12-08
CN107451046B true CN107451046B (zh) 2020-11-17

Family

ID=60485037

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610375434.9A Active CN107451046B (zh) 2016-05-30 2016-05-30 一种检测线程的方法及终端

Country Status (1)

Country Link
CN (1) CN107451046B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109947636B (zh) * 2017-12-20 2022-11-04 浙江宇视科技有限公司 异常线程定位方法及装置
CN108763057A (zh) * 2018-04-20 2018-11-06 北京五八信息技术有限公司 一种线程检测方法、装置、设备及计算机可读存储介质
CN109120691B (zh) * 2018-08-15 2021-05-14 恒生电子股份有限公司 业务系统的状态检测方法、系统、装置及计算机可读介质
CN112612635B (zh) * 2020-12-21 2022-06-10 杭州电子科技大学上虞科学与工程研究院有限公司 一种应用程序多层级保护方法
CN114020352B (zh) * 2021-10-27 2023-09-15 郑州云海信息技术有限公司 一种云平台配置方法、装置、设备以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101599039A (zh) * 2008-06-03 2009-12-09 华为技术有限公司 嵌入式c语言环境下异常处理方法及装置
CN104252530A (zh) * 2014-09-10 2014-12-31 北京京东尚科信息技术有限公司 一种单机爬虫抓取方法及系统
CN104601668A (zh) * 2014-12-24 2015-05-06 北京京东尚科信息技术有限公司 基于状态管理的数据推送方法、装置和系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100560658B1 (ko) * 2003-02-17 2006-03-16 삼성전자주식회사 고속의 오프셋 코드북 모드를 위한 암호화 장치 및 그 방법
CN100359486C (zh) * 2004-11-24 2008-01-02 中兴通讯股份有限公司 一种调试操作系统内核态程序的方法及装置
US7673181B1 (en) * 2006-06-07 2010-03-02 Replay Solutions, Inc. Detecting race conditions in computer programs
CN101561764B (zh) * 2009-05-18 2012-05-23 华为技术有限公司 一种多核环境下的补丁方法与补丁装置
US8522000B2 (en) * 2009-09-29 2013-08-27 Nvidia Corporation Trap handler architecture for a parallel processing unit
CN101794244A (zh) * 2010-03-18 2010-08-04 上海乐毅信息科技有限公司 多线程看门狗监控方法
US9104404B2 (en) * 2012-05-07 2015-08-11 Oracle International Corporation System and method for supporting a deferred reference to an object in an objected-oriented programming language environment
CN109213684B (zh) * 2018-09-18 2022-01-28 北京工业大学 基于OpenMP线程心跳检测技术的程序检测方法及应用

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101599039A (zh) * 2008-06-03 2009-12-09 华为技术有限公司 嵌入式c语言环境下异常处理方法及装置
CN104252530A (zh) * 2014-09-10 2014-12-31 北京京东尚科信息技术有限公司 一种单机爬虫抓取方法及系统
CN104601668A (zh) * 2014-12-24 2015-05-06 北京京东尚科信息技术有限公司 基于状态管理的数据推送方法、装置和系统

Also Published As

Publication number Publication date
CN107451046A (zh) 2017-12-08

Similar Documents

Publication Publication Date Title
CN107451046B (zh) 一种检测线程的方法及终端
CN106502906B (zh) 一种测试应用程序的方法和装置
CN111666222B (zh) 一种测试方法和相关装置
CN106708676B (zh) 接口测试方法及装置
CN105320598A (zh) 软件测试方法及装置
CN108572908B (zh) 信息反馈方法及装置
CN106294108B (zh) 应用程序测试方法及装置
CN112148579B (zh) 一种用户界面的测试方法和装置
CN108763887A (zh) 数据库操作请求验证方法、装置、服务器及存储介质
CN108834132A (zh) 一种数据传输方法及设备和相关介质产品
CN104135728A (zh) 网络连接方法及装置
CN111340587A (zh) 一种虚拟商品管理方法以及相关装置
CN103399705A (zh) 遥控终端设备的方法、装置和设备
CN112415367A (zh) 驱动芯片异常侦测方法、装置、电子设备及可读存储介质
CN110213313B (zh) 一种文件上传的方法、相关装置及系统
CN106020945B (zh) 快捷项添加方法及装置
CN103729283B (zh) 一种系统日志输出方法、装置及终端设备
CN107341398B (zh) 程序测评方法及装置
CN117008546A (zh) 设备数据的监测方法、装置、电子设备及存储介质
CN116303085A (zh) 一种测试原因分析方法、装置、设备及存储介质
CN116468382A (zh) 一种rpa机器人流程管理方法、装置、设备及存储介质
CN113961380B (zh) 一种跨应用修复的方法、装置、设备及存储介质
CN114064447B (zh) 界面测试方法、装置、存储介质及终端
CN112667868B (zh) 一种数据检测方法以及装置
CN107317908A (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
GR01 Patent grant
GR01 Patent grant