线程运行方法、装置、电子设备及存储介质与流程

文档序号:24413574发布日期:2021-03-26 20:18阅读:120来源:国知局
线程运行方法、装置、电子设备及存储介质与流程

1.本发明涉及开发领域,尤其涉及一种线程运行方法、装置、电子设备及计算机可读存储介质。


背景技术:

2.一个android程序默认情况只有一个进程,但是一个进程可以有多个线程。线程在android程序运行的时候就被创建,主要是负责控制程序界面的显示、更新和控件交互。其中,在所述多个线程中,有一个主线程,所有的android应用程序组件(包括activity、service、broadcast receiver)都在主线程中运行。
3.在运行主线程时通常会产生一些不可知的异常,一旦在主线程中某一任务产生了异常但没有对该异常进行捕获,就会导致整个应用的崩溃,给用户造成非常不好的体验。由于主线程中处理逻辑复杂,传统开发只能对产生异常的任务做处理,无法做到主线程所有异常任务的全局处理,这样会大大影响线程运行的效率,同时也容易带来界面运行的闪退。


技术实现要素:

4.本发明提供一种线程运行方法、装置、电子设备及计算机可读存储介质,其主要目的在于提高线程运行的效率。
5.为实现上述目的,本发明提供的一种线程运行方法,包括:
6.获取用于运行应用界面的多线程,并识别出所述多线程中的主线程;
7.利用预创建的线程任务运行机制对所述主线程进行任务编码,得到所述主线程的任务运行队列;
8.在所述任务运行队列中配置线程任务运行方法;
9.响应于所述任务运行队列中的线程任务运行请求,利用所述线程任务运行方法执行所述任务运行队列中线程任务的运行,得到运行结果。
10.可选地,所述获取用于运行应用界面的多线程,包括:
11.获取运行所述应用界面的应用程序,在所述应用程序中创建线程对象;
12.根据所述线程对象,生成所述多线程。
13.可选地,所述根据所述线程对象,生成所述多线程,包括:
14.通过发布机器发布所述线程对象对应的应用程序,在所述发布的应用程序中生成所述线程对象对应的线程,得到所述多线程。
15.可选地,所述利用预创建的线程任务运行机制对所述主线程进行任务编码,得到所述主线程的任务运行队列,包括:
16.获取所述主线程中待运行的线程任务,将所述线程任务传输至所述线程任务运行机制中;
17.利用所述线程任务运行机制中的任务编码脚本对所述线程任务进行任务编码,得到所述主线程的任务运行队列。
18.可选地,所述在所述任务运行队列中配置线程任务运行方法,包括:
19.利用预设的循环方法对所述任务运行队列中的线程任务进行任务循环处理;
20.对任务循环处理后的所述线程任务创建任务异常轮询机制,得到所述线程任务运行方法。
21.可选地,所述任务异常轮询机制包括:try

catch机制。
22.可选地,所述响应于所述任务运行队列中的线程任务运行请求,利用所述线程任务运行方法执行所述任务运行队列中的线程任务的运行,得到运行结果,包括:
23.根据所述线程任务运行请求,利用所述线程任务运行方法中的任务异常轮询机制识别所述任务运行队列中线程任务是否为异常线程任务;
24.若所述线程任务为异常线程任务,则利用所述线程任务运行方法中的循环方法对所述异常线程任务进行循环处理,直至所述任务运行队列中的剩余线程任务运行完成,得到所述任务运行队列的运行结果;
25.若所述线程任务不为异常线程任务,则运行所述线程任务,得到所述任务运行队列的运行结果。
26.为了解决上述问题,本发明还提供一种线程运行装置,所述装置包括:
27.识别模块,用于获取用于运行应用界面的多线程,并识别出所述多线程中的主线程;
28.编码模块,用于利用预创建的线程任务运行机制对所述主线程进行任务编码,得到所述主线程的任务运行队列;
29.配置模块,用于在所述任务运行队列中配置线程任务运行方法;
30.运行模块,用于响应于所述任务运行队列中的线程任务运行请求,利用所述线程任务运行方法执行所述任务运行队列中线程任务的运行,得到运行结果。
31.为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:
32.至少一个处理器;以及,
33.与所述至少一个处理器通信连接的存储器;其中,
34.所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以实现上述所述的线程运行方法。
35.为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个计算机程序,所述至少一个计算机程序被电子设备中的处理器执行以实现上述所述的线程运行方法。
36.本发明实施例首先获取用于运行应用界面的多线程,识别出所述多线程中的主线程,并利用预创建的线程任务运行机制对所述主线程进行任务编码,得到所述主线程的任务运行队列实现线程任务执行顺序的自动编码,保障在后续线程任务出现异常时能够准确定位的具体的线程任务,从而提高了线程运行的效率;其次,本发明实施例在所述任务运行队列中配置线程任务运行方法,保障了线程任务在运行时的不闪退,从而使得线程任务全局异常的统一处理,提高了线程运行的效率的同时可以防止应用界面闪退,带来更好的用户体验;进一步地,本发明实施例响应于所述任务运行队列中的线程任务运行请求,利用所述线程任务运行方法执行所述任务运行队列中线程任务的运行,得到运行结果。因此,本发明提出的一种线程运行方法、装置、电子设备以及存储介质可以提高线程运行的效率。
附图说明
37.图1为本发明一实施例提供的线程运行方法的流程示意图;
38.图2为本发明第一实施例中图1提供的线程运行方法其中一个步骤的详细流程示意图;
39.图3为本发明一实施例提供的线程运行装置的模块示意图;
40.图4为本发明一实施例提供的实现线程运行方法的电子设备的内部结构示意图;
41.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
42.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
43.本申请实施例提供一种线程运行方法。所述线程运行方法的执行主体包括但不限于服务端、终端等能够被配置为执行本申请实施例提供的该方法的电子设备中的至少一种。换言之,所述线程运行方法可以由安装在终端设备或服务端设备的软件或硬件来执行,所述软件可以是区块链平台。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。
44.参照图1所示,为本发明一实施例提供的线程运行方法的流程示意图。在本发明实施例中,所述线程运行方法包括:
45.s1、获取用于运行应用界面的多线程,并识别出所述多线程中的主线程。
46.本发明实施例中,所述应用界面在操作系统中执行,所述操作系统为android系统,可选的,所述应用界面为用户界面(user interface,ui),所述ui界面是系统和用户之间进行交互和信息交换的媒介,用于实现信息的内部形式与人类可以接受形式之间的转换,使用户能够方便有效率地去操作硬件以达成双向之交互,完成所希望借助硬件完成之工作。
47.应该了解,所述ui界面的显示、更新以及控件交互是通过应用程序在运行时创建的多线程进行控制,所述多线程指的是从软件或者硬件上实现多个线程并发执行的技术,其中,线程是程序中一个单一的顺序控制流程。
48.需要声明的是,本发明实施例中,所述多线程是基于android系统application类进行创建的,为了更好的捕获出后续线程中的异常任务,本发明实施例通过在android系统中添加类catchapplication并继承android系统的application类,以更加直观的了解到后续线程中异常任务的捕获。
49.其中,所述catchapplication对application类的继承通过在所述android系统的配置文件中application类添加所述catchapplication名称标签实现。
50.进一步地,参阅图2所示,所述获取用于运行应用界面的多线程,包括:
51.s20、获取运行所述应用界面的应用程序,在所述应用程序中创建线程对象;
52.s21、根据所述线程对象,生成所述多线程。
53.一个可选实施例中,所述应用程序通过java语言编译,所述线程对象通过在所述应用程序的配置文件中进行创建。所述配置文件为androidmanifest.xml文件。
54.一个可选实施例中,所述根据所述线程对象,生成所述多线程,包括:通过发布机器发布所述线程对象对应的应用程序,在所述发布的应用程序中生成所述线程对象对应的
线程,得到所述多线程。其中,所述线程对象可以理解为将要执行应用界面的类,所述发布机器可以为tomcat机器。
55.进一步地,应该了解,在所述多线程中会存在一个主线程,用于控制所述应用界面中的任务访问、控件交互以及服务响应等核心任务。
56.本发明的一个可选实施例中,利用预设的主线程识别方法判断出所述多线程中的主线程。其中,所述预设的主线程识别方法在上述的catchapplication类进行编译,其包括:funattachbasecontext(base:context?)方法,进一步地,若所述多线程中的线程为context,则识别所述线程为主线程,若所述多线程中的线程不是context,则识别所述线程不是主线程。
57.s2、利用预创建的线程任务运行机制对所述主线程进行任务编码,得到所述主线程的任务运行队列。
58.本发明实施例中,所述预创建的线程任务运行机制包括handler机制,用于主线程的任务编码,其包括:当发出一个线程任务之后,首先进入一个线程任务队列,发送线程任务的函数即刻返回,而另外一个部分在线程任务队列中逐一将线程任务取出,并对线程任务进行处理,即发送线程任务和接收线程任务不是同步的处理,保障了后续线程任务异常的捕获前提。
59.详细地,所述利用预创建的线程任务运行机制对所述主线程进行任务编码,得到所述主线程的任务运行队列,包括:获取所述主线程中待运行的线程任务,将所述线程任务传输至所述线程任务运行机制中;利用所述线程任务运行机制中的任务编码脚本对所述线程任务进行任务编码,得到所述主线程的任务运行队列。
60.一个可选实施例中,所述线程任务基于用户需求得到,比如用户a为登录应用界面,用户b为存储应用界面的服务访问数据等,所述线程任务通过looper变量进行传输。
61.一个可选实施中,所述任务编码脚本通过javascript语言编译,用于实现线程任务执行顺序的自动编码,保障在后续线程任务出现异常时能够准确定位的具体的线程任务。
62.一个可选实施中,所述任务编码指的是所述线程任务在所述线程任务运行机制中的任务执行顺序。进一步地,本发明实施例根据上述线程任务传输的时间顺序,利用所述任务编码脚本执行所述线程任务的任务编码,即时间优先传输的线程任务优先进行任务编码。
63.s3、在所述任务运行队列中配置线程任务运行方法。
64.应该了解,在所述任务运行队列运行的过程中,由于主线程的任务逻辑处理非常复杂,很容易出现所述任务运行队列中线程任务运行异常,导致主线程的运行失败,从而导致整个ui界面的全局闪退,因此,本发明实施例在任务运行队列中配置线程任务运行方法,以捕获出所述任务运行队列中的异常线程任务,保障所述任务运行队列中线程任务全部运行,从而可以实现所述应用界面的不闪退。
65.详细地,所述在所述任务运行队列中配置线程任务运行方法,包括:利用预设的循环方法对所述任务运行队列中的线程任务进行任务循环处理;对任务循环处理后的所述线程任务创建任务异常轮询机制,得到所述线程任务运行方法。
66.一个可选实施例中,所述预设的循环方法包括where方法,所述任务异常轮询机制
包括:try

catch机制,通过所述try

catch机制可以捕获任务循环处理后的所述线程任务在运行过程中的异常线程任务,进一步地,所述try

catch机制包括:try{}catch(exceptione){e.printstacktrace();}。
67.示例性地,所述在所述任务运行队列中配置线程任务运行方法可以通过下述方法表示:
68.while(true){try{looper.loop();}catch(throwable e){e.printstacktrace();if(e.getmessage()!=null&&e.getmessage().startswith("unable to start activity")){//如果打开activity崩溃,就杀死进程,让app重启。android.os.process.killprocess(android.os.process.mypid());break;}}}。
69.其中,若所述线程任务可以正常运行,则利用try

catch机制捕获所述线程任务在运行时的异常任务,若所述线程任务不可以正常运行,则关闭对应的进程,重新开启服务。
70.s4、响应于所述任务运行队列中的线程任务运行请求,利用所述线程任务运行方法执行所述任务运行队列中线程任务的运行,得到运行结果。
71.本发明实施例中,响应于所述任务运行队列中的线程任务运行请求,利用所述线程任务运行方法执行所述任务运行队列中的线程任务的运行,以保障所述任务运行队列中的线程任务可以全部运行。
72.详细地,所述响应于所述任务运行队列中的线程任务运行请求,利用所述线程任务运行方法执行所述任务运行队列中的线程任务的运行,得到运行结果,包括:根据所述线程任务运行请求,利用所述线程任务运行方法中的任务异常轮询机制识别所述任务运行队列中线程任务是否为异常线程任务;若所述线程任务为异常线程任务,则利用所述线程任务运行方法中的循环方法对所述异常线程任务进行循环处理,直至所述任务运行队列中的剩余线程任务运行完成,结束所述异常线程任务的循环处理,得到所述任务运行队列的运行结果;若所述线程任务不为异常线程任务,则运行所述线程任务,得到所述任务运行队列的运行结果。
73.其中,若所述线程任务为异常线程任务,则表示该线程任务抛出了异常,但是该线程任务还是可以正常运行,此时,直接停止所述任务运行队列,会造成所述任务运行队列中剩余的线程任务无法运行,从而导致整个服务闪退,给用户会带来较差的体验,因此,本发明实施例利用所述线程任务运行方法中的循环方法对所述异常线程任务进行循环处理,直至所述任务运行队列中的剩余线程任务运行完成,得到对应的任运行结果,以保障任务运行队列中所有的线程任务全部运行,实现所述任务运行队列对应服务的不闪退;若所述线程任务不为异常线程任务,则表示该线程任务并没有抛出了异常,因此,本发明实施例运行所述线程任务,得到对应的运行结果。
74.本发明实施例首先获取用于运行应用界面的多线程,识别出所述多线程中的主线程,并利用预创建的线程任务运行机制对所述主线程进行任务编码,得到所述主线程的任务运行队列实现线程任务执行顺序的自动编码,保障在后续线程任务出现异常时能够准确定位的具体的线程任务,从而提高了线程运行的效率;其次,本发明实施例在所述任务运行队列中配置线程任务运行方法,保障了线程任务在运行时的不闪退,从而使得线程任务全局异常的统一处理,提高了线程运行的效率的同时可以防止应用界面闪退,带来更好的用户体验;进一步地,本发明实施例响应于所述任务运行队列中的线程任务运行请求,利用所
述线程任务运行方法执行所述任务运行队列中线程任务的运行,得到运行结果。因此,本发明可以提高线程运行的效率。
75.如图3所示,是本发明线程运行装置的功能模块图。
76.本发明所述线程运行装置100可以安装于电子设备中。根据实现的功能,所述线程运行装置可以包括识别模块101、编码模块102、配置模块103以及运行模块104。本发明所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
77.在本实施例中,关于各模块/单元的功能如下:
78.所述识别模块101,用于获取用于运行应用界面的多线程,并识别出所述多线程中的主线程;
79.所述编码模块102,用于利用预创建的线程任务运行机制对所述主线程进行任务编码,得到所述主线程的任务运行队列;
80.所述配置模块103,用于在所述任务运行队列中配置线程任务运行方法;
81.所述运行模块104,用于响应于所述任务运行队列中的线程任务运行请求,利用所述线程任务运行方法执行所述任务运行队列中线程任务的运行,得到运行结果。
82.详细地,本发明实施例中所述线程运行装置100中的所述各模块在使用时采用与上述的图1和图2中所述的线程运行方法一样的技术手段,并能够产生相同的技术效果,这里不再赘述。
83.如图4所示,是本发明实现线程运行方法的电子设备的结构示意图。
84.所述电子设备1可以包括处理器10、存储器11和总线,还可以包括存储在所述存储器11中并可在所述处理器10上运行的计算机程序,如线程运行程序12。
85.其中,所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:sd或dx存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。所述存储器11在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡、闪存卡(flash card)等。进一步地,所述存储器11还可以既包括电子设备1的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如线程运行的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
86.所述处理器10在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(central processing unit,cpu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器10是所述电子设备的控制核心(control unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如执行线程运行等),以及调用存储在所述存储器11内的数据,以执行电子设备1的各种功能和处理数据。
87.所述总线可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)
总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器11以及至少一个处理器10等之间的连接通信。
88.图4仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图4示出的结构并不构成对所述电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
89.例如,尽管未示出,所述电子设备1还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器10逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备1还可以包括多种传感器、蓝牙模块、wi

fi模块等,在此不再赘述。
90.进一步地,所述电子设备1还可以包括网络接口,可选地,所述网络接口可以包括有线接口和/或无线接口(如wi

fi接口、蓝牙接口等),通常用于在该电子设备1与其他电子设备之间建立通信连接。
91.可选地,该电子设备1还可以包括用户接口,用户接口可以是显示器(display)、输入单元(比如键盘(keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organic light

emitting diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。
92.应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
93.所述电子设备1中的所述存储器11存储的线程运行12是多个计算机程序的组合,在所述处理器10中运行时,可以实现:
94.获取用于运行应用界面的多线程,并识别出所述多线程中的主线程;
95.利用预创建的线程任务运行机制对所述主线程进行任务编码,得到所述主线程的任务运行队列;
96.在所述任务运行队列中配置线程任务运行方法;
97.响应于所述任务运行队列中的线程任务运行请求,利用所述线程任务运行方法执行所述任务运行队列中线程任务的运行,得到运行结果。
98.具体地,所述处理器10对上述计算机程序的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
99.进一步地,所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非易失性计算机可读取存储介质中。所述计算机可读存储介质可以是易失性的,也可以是非易失性的。例如,所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read

only memory)。
100.本发明还提供一种计算机可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序在被电子设备的处理器所执行时,可以实现:
101.获取用于运行应用界面的多线程,并识别出所述多线程中的主线程;
102.利用预创建的线程任务运行机制对所述主线程进行任务编码,得到所述主线程的任务运行队列;
103.在所述任务运行队列中配置线程任务运行方法;
104.响应于所述任务运行队列中的线程任务运行请求,利用所述线程任务运行方法执行所述任务运行队列中线程任务的运行,得到运行结果。
105.在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
106.所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
107.另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
108.对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
109.因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
110.本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
111.此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
112.最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1