本技术涉及线程性能检测,尤其涉及一种线程状态检测方法、装置、电子设备及存储介质。
背景技术:
1、随着汽车智能化的快速发展,车载应用的数量和复杂性不断增加,很多应用引入具有线程池的开源库(如okhttp等),同时,应用开发者自定义的线程池和线程,若有不合理的线程池配置和管理、或不合理的线程使用、或不合理的线程锁使用,会导致应用出现卡顿、崩溃,影响用户驾驶体验。然而,当前android开发环境下缺乏简单且有效的线程性能检测工具,开发人员难以发现应用中的线程性能问题。
技术实现思路
1、本技术实施例提供一种线程状态监测方法、装置、电子设备及存储介质,以解决相关技术中android开发环境下缺乏简单且有效的线程性能检测工具,开发人员难以发现应用中的线程性能的问题。
2、为了解决上述技术问题,本技术实施例是这样实现的::
3、第一方面,本技术实施例提供了一种线程状态监测方法,所述方法包括:
4、响应于被检测的目标应用程序启动,读取所述目标应用程序的应用代码中嵌入的线程性能检测包,得到目标线程状态的性能阈值,所述目标线程状态为影响线程性能的线程状态;
5、调用心跳线程,获取所述目标应用程序的所有线程的线程信息;
6、基于所述性能阈值和所述线程信息,检测得到所述所有线程的线程状态信息。
7、可选地,所述调用所述心跳线程,获取所述目标应用程序的所有线程的线程信息,包括:
8、调用所述线程性能检测包,获取预先设置的心跳间隔时间;
9、调用所述心跳线程基于所述心跳间隔时间,读取所述目标应用程序的所有线程的线程信息。
10、可选地,所述基于所述性能阈值和所述线程信息,检测得到所述所有线程的线程状态信息,包括:
11、将所述线程信息添加至线程信息列表中;
12、调用预设功能函数遍历所述线程信息列表中的线程信息,得到所述所有线程的线程栈信息;
13、基于所述线程栈信息和所述性能阈值,确定所述所有线程的线程状态信息。
14、可选地,所述目标线程状态包括:阻塞状态、等待状态、超时等待状态和终止状态,所述性能阈值包括:阻塞状态的第一性能阈值、所述等待状态的第二性能阈值和超时等待状态的第三性能阈值。
15、可选地,所述基于所述性能阈值和所述线程信息,检测得到所述所有线程的线程状态信息,包括:
16、基于所述线程信息,确定所述所有线程的线程状态是否为终止状态;
17、响应于所述所有线程的线程状态为非终止状态,基于所述线程信息和所述第一性能阈值,确定所述所有线程的线程状态是否为阻塞状态;
18、响应于所述所有线程的线程状态为非阻塞状态,基于所述线程信息和所述第二性能阈值,确定所述所有线程的线程状态是否为等待状态;
19、响应于所述所有线程的线程状态为非等待状态,基于所述线程信息和所述第三性能阈值,确定所述所有线程的线程状态是否为超时等待状态。
20、可选地,所述基于所述线程信息和所述第一性能阈值,确定所述所有线程的线程状态是否为阻塞状态,包括:
21、基于连续监测的所述线程信息,判断所述所有线程为阻塞状态的时长是否超过所述第一性能阈值,得到第一判断结果;
22、基于所述第一判断结果,确定所述所有线程的线程状态是否为阻塞状态。
23、可选地,所述基于所述线程信息和所述第二性能阈值,确定所述所有线程的线程状态是否为等待状态,包括:
24、基于连续监测的所述线程信息,判断所述所有线程为等待状态的时长是否超过所述第二性能阈值,得到第二判断结果;
25、基于所述第二判断结果,确定所述所有线程的线程状态是否为等待状态。
26、可选地,所述基于所述线程信息和所述第三性能阈值,确定所述所有线程的线程状态是否为超时等待状态,包括:
27、基于连续监测的所述线程信息,判断所述所有线程为超时等待状态的时长是否超过所述第三性能阈值,得到第三判断结果;
28、基于所述第三判断结果,确定所述所有线程的线程状态是否为超时等待状态。
29、可选地,在所述基于所述性能阈值和所述线程信息,检测得到所述所有线程的线程状态信息之后,还包括:
30、在检测得到所述所有线程中的目标线程处于所述目标线程状态的情况下,获取所述目标线程的目标线程栈信息;
31、输出所述目标线程处于所述目标线程状态的提示信息,,并显示所述目标线程栈信息。
32、第二方面,本技术实施例提供了一种线程状态检测装置,所述装置包括:
33、性能阈值获取模块,用于响应于被检测的目标应用程序启动,读取所述目标应用程序的应用代码中嵌入的线程性能检测包,得到目标线程状态的性能阈值,所述目标线程状态为影响线程性能的线程状态;
34、线程信息获取模块,用于调用心跳线程,获取所述目标应用程序的所有线程的线程信息;
35、线程状态检测模块,用于基于所述性能阈值和所述线程信息,检测得到所述所有线程的线程状态信息。
36、可选地,所述线程信息获取模块包括:
37、间隔时间获取单元,用于调用所述线程性能检测包,获取预先设置的心跳间隔时间;
38、线程信息读取单元,用于调用所述心跳线程基于所述心跳间隔时间,读取所述目标应用程序的所有线程的线程信息。
39、可选地,所述线程状态检测模块包括:
40、线程信息添加单元,用于将所述线程信息添加至线程信息列表中;
41、线程栈信息获取单元,用于调用预设功能函数遍历所述线程信息列表中的线程信息,得到所述所有线程的线程栈信息;
42、线程状态确定单元,用于基于所述线程栈信息和所述性能阈值,确定所述所有线程的线程状态信息。
43、可选地,所述目标线程状态包括:阻塞状态、等待状态、超时等待状态和终止状态,所述性能阈值包括:阻塞状态的第一性能阈值、所述等待状态的第二性能阈值和超时等待状态的第三性能阈值。
44、可选地,所述线程状态检测模块包括:
45、终止状态确定单元,用于基于所述线程信息,确定所述所有线程的线程状态是否为终止状态;
46、阻塞状态确定单元,用于响应于所述所有线程的线程状态为非终止状态,基于所述线程信息和所述第一性能阈值,确定所述所有线程的线程状态是否为阻塞状态;
47、等待状态确定单元,用于响应于所述所有线程的线程状态为非阻塞状态,基于所述线程信息和所述第二性能阈值,确定所述所有线程的线程状态是否为等待状态;
48、超时等待状态确定单元,用于响应于所述所有线程的线程状态为非等待状态,基于所述线程信息和所述第三性能阈值,确定所述所有线程的线程状态是否为超时等待状态。
49、可选地,所述阻塞状态确定单元包括:
50、第一判断结果获取子单元,用于基于连续监测的所述线程信息,判断所述所有线程为阻塞状态的时长是否超过所述第一性能阈值,,得到第一判断结果;
51、阻塞状态确定子单元,用于基于所述第一判断结果,确定所述所有线程的线程状态是否为阻塞状态。
52、可选地,所述等待状态确定单元包括:
53、第二判断结果获取子单元,用于基于连续监测的所述线程信息,判断所述所有线程为等待状态的时长是否超过所述第二性能阈值,,得到第二判断结果;
54、等待状态确定子单元,用于基于所述第二判断结果,确定所述所有线程的线程状态是否为等待状态。
55、可选地,所述超时等待状态确定单元包括:
56、第三判断结果获取子单元,用于基于连续监测的所述线程信息,判断所述所有线程为超时等待状态的时长是否超过所述第三性能阈值,得到第三判断结果;
57、超时等待状态确定子单元,用于基于所述第三判断结果,确定所述所有线程的线程状态是否为超时等待状态。
58、可选地,所述装置还包括:
59、目标线程栈获取模块,用于在检测得到所述所有线程中的目标线程处于所述目标线程状态的情况下,获取所述目标线程的目标线程栈信息;
60、提示信息输出模块,用于输出所述目标线程处于所述目标线程状态的提示信息,并显示所述目标线程栈信息。
61、第三方面,本技术实施例提供了一种电子设备,包括::
62、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述任一项所述的线程状态检测方法。
63、第四方面,本技术实施例提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述任一项所述的线程状态检测方法。
64、在本技术实施例中,通过响应于被检测的目标应用程序启动,读取目标应用程序的应用代码中嵌入的线程性能检测包,得到目标线程状态的性能阈值,目标线程状态为影响线程性能的线程状态。调用心跳线程,获取目标应用程序的所有线程的线程信息。基于性能阈值和线程信息,检测得到所有线程的线程状态信息。本技术实施例通过在目标应用程序内嵌入进行线程性能检测的检测包,以在目标应用程序启动时,自动对目标应用程序的所有线程的线程性能进行检测,可以有效检测出应用中的线程性能,避免应用出现卡顿、崩溃等情况。进而,针对车载应用程序而言,能够提高驾驶安全系数。
65、上述说明仅是本技术技术方案的概述,为了能够更清楚了解本技术的技术手段,而可依照说明书的内容予以实施,并且为了让本技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。
1.一种线程状态检测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述调用所述心跳线程,获取所述目标应用程序的所有线程的线程信息,包括:
3.根据权利要求1所述的方法,其特征在于,所述基于所述性能阈值和所述线程信息,检测得到所述所有线程的线程状态信息,,包括:
4.根据权利要求1所述的方法,其特征在于,所述目标线程状态包括:阻塞状态、等待状态、超时等待状态和终止状态,所述性能阈值包括:阻塞状态的第一性能阈值、所述等待状态的第二性能阈值和超时等待状态的第三性能阈值。
5.根据权利要求4所述的方法,其特征在于,所述基于所述性能阈值和所述线程信息,检测得到所述所有线程的线程状态信息,,包括:
6.根据权利要求5所述的方法,其特征在于,所述基于所述线程信息和所述第一性能阈值,确定所述所有线程的线程状态是否为阻塞状态,包括:
7.根据权利要求5所述的方法,其特征在于,所述基于所述线程信息和所述第二性能阈值,确定所述所有线程的线程状态是否为等待状态,包括:
8.根据权利要求5所述的方法,其特征在于,所述基于所述线程信息和所述第三性能阈值,确定所述所有线程的线程状态是否为超时等待状态,包括:
9.根据权利要求1所述的方法,其特征在于,在所述基于所述性能阈值和所述线程信息,检测得到所述所有线程的线程状态信息之后,还包括:
10.一种线程状态检测装置,其特征在于,所述装置包括:
11.一种电子设备,其特征在于,包括:
12.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行权利要求1至9中任一项所述的线程状态检测方法。
