具有同步回调信息功能的数据异步处理方法及模块.pdf

上传人:111****11 文档编号:1285722 上传时间:2018-04-12 格式:PDF 页数:8 大小:432.93KB
返回 下载 相关 举报
摘要
申请专利号:

CN201610881104.7

申请日:

2016.10.09

公开号:

CN106502773A

公开日:

2017.03.15

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 9/48申请日:20161009|||公开

IPC分类号:

G06F9/48; G06F11/30; G06F1/32

主分类号:

G06F9/48

申请人:

武汉斗鱼网络科技有限公司

发明人:

张磊

地址:

430000 湖北省武汉市东湖开发区软件园东路1号软件产业4.1期B1栋11楼

优先权:

专利代理机构:

武汉智权专利代理事务所(特殊普通合伙) 42225

代理人:

沈林华

PDF下载: PDF下载
内容摘要

本发明公开了一种具有同步回调信息功能的数据异步处理方法及模块,涉及异步数据处理领域。该方法的步骤为:创建一个指定最大线程数量的线程池pool,为每个数据异步处理任务的线程添加优先级后,加入pool;当pool中的线程启动时,返回当前线程对应的数据异步处理任务开始执行的信息;对当前线程按照预先设置的计时周期开始计时;通过pool调用当前线程开始工作,若当前线程在工作过程中发生异常,则确定并返回发生异常时的堆栈信息;定时检测当前线程是否完成。本发明能够控制多线程的运行数量,定时检测线程是否执行完毕;不仅能够得知数据异步处理任务的执行状态,而且占用CPU的资源和耗费的电能均较少,能够保证系统的性能。

权利要求书

1.一种具有同步回调信息功能的数据异步处理方法,其特征在于,该方法包括以下步
骤:
S1:创建一个指定最大线程数量的线程池pool,为每个数据异步处理任务的线程添加
优先级后,加入pool,转到S2;
S2:当pool中的线程启动时,返回当前线程对应的数据异步处理任务开始执行的信息;
对当前线程按照预先设置的计时周期开始计时,转到S3;
S3:通过pool调用当前线程开始工作,判断当前线程在工作过程中,是否发生异常,若
是,确定并返回发生异常时的堆栈信息;否则转到S4;
S4:在S2中的计时周期过后,判断当前线程对应的数据异步处理任务是否完成,若是,
返回当前线程对应的数据异步处理任务完成的信息;否则在预先设置的等待周期后,重新
执行S4的判断步骤。
2.如权利要求1所述的具有同步回调信息功能的数据异步处理方法,其特征在于:S3中
所述确定并返回发生异常时的堆栈信息的具体流程为:确定当前线程出现异常时的堆栈信
息、并将其进行封装为异常文件;返回封装后的异常文件。
3.如权利要求1或2所述的具有同步回调信息功能的数据异步处理方法,其特征在于:
S4中所述等待周期为50~200毫秒。
4.一种实现如权利要求1至3任一项所述方法的具有同步回调信息功能的数据异步处
理模块,其特征在于:该模块包括回调接口、线程池创建子模块、线程启动响应子模块、异常
捕获子模块和线程执行状态确定子模块;
线程池创建子模块用于:创建一个指定最大线程数量的线程池pool,为每个数据异步
处理任务的线程添加优先级后,加入pool;
线程启动响应子模块用于:当pool中的线程启动时,调用回调接口返回当前线程对应
的数据异步处理任务开始执行的信息;对当前线程按照预先设置的计时周期开始计时,计
时周期过后向线程执行状态确定子模块发送计时完成信号;
异常捕获子模块用于:判断pool中的线程在工作过程中是否发生异常,若是,向线程执
行状态确定子模块发送异常信号;否则向线程执行状态确定子模块发送线程执行状态确定
信号;
线程执行状态确定子模块用于:
(1)收到计时完成信号和异常信号时,调用回调接口确定和返回发生异常时的堆栈信
息;
(2)收到计时完成信号和线程执行状态确定信号时,判断线程启动响应子模块启动的
线程对应的数据异步处理任务是否完成,若是,调用回调接口返回当前线程对应的数据异
步处理任务完成的信息;否则在预先设置的等待周期后,重新进行判断工作流程。
5.如权利要求4所述的具有同步回调信息功能的数据异步处理模块,其特征在于:所述
数据异步处理模块为单例模式。
6.如权利要求4所述的具有同步回调信息功能的数据异步处理模块,其特征在于:所述
线程执行状态确定子模块收到计时完成信号和异常信号时的具体工作流程为:调用回调接
口,将发生异常时的堆栈消息进行封装为异常文件,返回封装后的异常文件。
7.如权利要求4至6任一项所述的具有同步回调信息功能的数据异步处理模块,其特征
在于:所述线程执行状态确定子模块预先设置的等待周期为50~200毫秒。

说明书

具有同步回调信息功能的数据异步处理方法及模块

技术领域

本发明涉及异步数据处理领域,具体涉及一种具有同步回调信息功能的数据异步
处理方法及模块。

背景技术

通常在Android的应用开发过程中,会经常使用异步处理数据的功能;由于
Android的UI(User Interface,用户界面)界面是工作在主线程的,因此若一些非常耗时的
工作若不采用异步方式进行处理而是直接放在主线程中处理,则会导致Android系统APP卡
顿,严重时甚至会出现ANR(Application Not Responding,应用程序无响应)的异常错误。

目前,现有的基于Android的异步处理数据的方法一般为:每开启一个新的任务就
会开启一个新的线程(线程是程序中一个单一的顺序控制流程,是一个相对独立和可调度
的执行单元,在单个程序中同时运行多个线程完成不同的工作,称为多线程),任务完成后
等待系统回收线程。但是,当数据异步处理任务较多时,开启和回收多线程会降低系统的性
能,而且上述方法无法对异步任务的执行状态进行反馈;由于开发中很多逻辑都是需要同
步处理的,因此反馈异步任务的执行状态和处理结构会变得尤为重要。

发明内容

针对现有技术中存在的缺陷,本发明解决的技术问题为:控制多线程的运行数量,
定时检测线程是否执行完毕。本发明不仅能够清晰得知数据异步处理任务的执行状态,而
且占用CPU的资源和耗费的电能均较少,能够保证系统的性能,在同步应用场景中具有非常
明显的优势。

为达到以上目的,本发明提供的具有同步回调信息功能的数据异步处理方法,方
法包括以下步骤:

S1:创建一个指定最大线程数量的线程池pool,为每个数据异步处理任务的线程
添加优先级后,加入pool,转到S2;

S2:当pool中的线程启动时,返回当前线程对应的数据异步处理任务开始执行的
信息;对当前线程按照预先设置的计时周期开始计时,转到S3;

S3:通过pool调用当前线程开始工作,判断当前线程在工作过程中,是否发生异
常,若是,确定并返回发生异常时的堆栈信息;否则转到S4;

S4:在S2中的计时周期过后,判断当前线程对应的数据异步处理任务是否完成,若
是,返回当前线程对应的数据异步处理任务完成的信息;否则在预先设置的等待周期后,重
新执行S4的判断步骤。

本发明提供的实现上述方法的具有同步回调信息功能的数据异步处理模块,包括
回调接口、线程池创建子模块、线程启动响应子模块、异常捕获子模块和线程执行状态确定
子模块;

线程池创建子模块用于:创建一个指定最大线程数量的线程池pool,为每个数据
异步处理任务的线程添加优先级后,加入pool;

线程启动响应子模块用于:当pool中的线程启动时,调用回调接口返回当前线程
对应的数据异步处理任务开始执行的信息;对当前线程按照预先设置的计时周期开始计
时,计时周期过后向线程执行状态确定子模块发送计时完成信号;

异常捕获子模块用于:判断pool中的线程在工作过程中是否发生异常,若是,向线
程执行状态确定子模块发送异常信号;否则向线程执行状态确定子模块发送线程执行状态
确定信号;

线程执行状态确定子模块用于:

(1)收到计时完成信号和异常信号时,调用回调接口确定和返回发生异常时的堆
栈信息;

(2)收到计时完成信号和线程执行状态确定信号时,判断线程启动响应子模块启
动的线程对应的数据异步处理任务是否完成,若是,调用回调接口返回当前线程对应的数
据异步处理任务完成的信息;否则在预先设置的等待周期后,重新进行判断工作流程。

与现有技术相比,本发明的优点在于:

(1)与现有技术中每开启一个新的任务就会开启一个新的线程相比,本发明创建
了指定最大线程数量的线程池pool(S1);pool能够控制最大实例化线程的数量,当外界申
请数量超过预设的最大线程数时,让后进来的线程先等待其他线程执行完成,再来调度该
线程进行执行。因此,pool能够合理控制系统的最大开销,从而达到有效的利用资源,不会
开辟很多线程而浪费系统资源的问题(若线程无限开辟下去,必然会导致体统运行出现卡
顿或者严重情况下出现死机等)。

与此同时,与现有技术中无法对异步任务的执行状态进行反馈相比,本发明在线
程启动、发生异常和结束时均会返回相应的信息,进而使得外界能够清晰得知线程对应数
据异步处理任务的执行状态,对任务异常情况即时进行处理。因此,本发明在同步应用场景
中具有非常明显的优势。

(2)本发明通过定时检测(S4中设置的等待周期)的方法确定线程是否工作完成,
由于不断快速查询会占用CPU资源且会耗费更多的电能,因此若相邻两次查询之间设置合
适时长的等待周期,不仅能够保证获取线程的执行状态,而且占用CPU的资源和耗费的电能
均较少。

(3)本发明的数据异步处理模块使用单例模式(一个类有且仅有一个实例,并且自
行实例化向整个系统提供),单例模式最大的优点在于在程序的任何位置都保留一份实例,
并且任何位置都能够快速访问到这个单例;因此,本发明能够在使用中显著降低开发者获
取实例的难度,进而明显提高工作效率。

附图说明

图1为本发明实施例中具有同步回调信息功能的数据异步处理方法的流程图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

参见图1所示,本发明实施例中的具有同步回调信息功能的数据异步处理方法,包
括以下步骤:

S1:创建一个指定最大线程数量的线程池pool,为每个数据异步处理任务的线程
添加优先级后,加入pool,转到S2。

线程池:即多线程处理形式,在处理过程中将任务线程添加至队列,然后在创建线
程后自动启动这些任务;线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默
认的优先级运行,并处于多线程单元中。

S2:当pool中的线程启动时,告知外界当前线程对应的数据异步处理任务开始执
行的信息、并通过1个休眠函数Thread.sleep(50),对当前线程按照预先设置的计时周期开
始计时,转到S3。

S3:通过pool调用当前线程开始工作(即处理当前线程对应的数据异步处理任务
开始执行),判断当前线程在工作过程中,是否发生异常,若是,确定并告知外界发生异常时
的堆栈信息,结束,否则在S2中的计时周期过后,转到S4。

S3中确定并告知外界发生异常时的堆栈信息的具体流程为:使用try-catch代码
块中的代码,确定当前线程出现异常时的堆栈信息、并将其封装至Exception类中;解析
Exception类中的堆栈信息后,通过接口的方式将堆栈信息通知给调用者。

S4:判断当前线程对应的数据异步处理任务是否完成,若是,告知外界当前线程对
应的数据异步处理任务完成的信息,结束;否则在预先设置的等待周期(50~200毫秒,本实
施例中为50毫秒,一般为100毫秒)后,重新执行S4。

本发明实施例中的实现上述方法的具有同步回调信息功能的数据异步处理模块,
该模块为单例模式,单例模式具体的实现流程为:

private static volatile TaskHandler instance;

//声明单例的实例

public static TaskHandler getInstance(){

//全局唯一获取单例的函数

if(instance==null){

//判断该实例是否为空

synchronized(TaskHandler.class){

//同步代码块

if(instance==null){

//双重判断是否为空

instance=new TaskHandler();

//通过new关键字实例化类}}}

return instance;

//将实例对象返回}

上述实现流程中,考虑了多线程的问题,所以在初始化的时候加了synchronized
关键字,synchronized关键字表示同步的意思,表明被synchronized括起来的部分,不能多
线程操作,同一时刻只能一个线程进行操作。这种同步机制的使用,能够有效的避免生产多
个单例实例出来;同时使用了双重判断空的逻辑,能够有效的避免多线程而导致的多个实
例的产生。

在此基础上,该模块包括回调接口、线程池创建子模块、线程启动响应子模块、异
常捕获子模块和线程执行状态确定子模块。

回调接口的接口设计流程为:


线程池创建子模块用于:创建一个指定最大线程数量的线程池pool,为每个数据
异步处理任务的线程添加优先级后,加入pool。

线程启动响应子模块用于:当pool中的线程启动时,调用回调接口中的onStart函
数,告知外界当前线程对应的数据异步处理任务开始执行的信息;同时通过1个休眠函数
Thread.sleep(50),对当前线程按照预先设置的计时周期开始计时,计时周期过后向线程
执行状态确定子模块发送计时完成信号。

异常捕获子模块用于:判断pool中的线程在工作过程中是否发生异常,若是,向线
程执行状态确定子模块发送异常信号;否则向线程执行状态确定子模块发送线程执行状态
确定信号。

线程执行状态确定子模块用于:

(1)收到计时完成信号和异常信号时,调用回调接口中的onError函数告知外界发
生异常,将异常捕获子模块检测发生异常时的堆栈信息封装至errorMsg里面(errorMsg是
字符串),外界可以通过errorMsg获取详细的失败原因。

(2)收到计时完成信号和线程执行状态确定信号时,判断线程启动响应子模块启
动的线程对应的数据异步处理任务是否完成,若是,调用回调接口中的onSuccess函数,告
知外界当前线程对应的数据异步处理任务完成的信息;否则在预先设置的等待周期后,重
新进行判断工作流程。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离
本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护
范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

具有同步回调信息功能的数据异步处理方法及模块.pdf_第1页
第1页 / 共8页
具有同步回调信息功能的数据异步处理方法及模块.pdf_第2页
第2页 / 共8页
具有同步回调信息功能的数据异步处理方法及模块.pdf_第3页
第3页 / 共8页
点击查看更多>>
资源描述

《具有同步回调信息功能的数据异步处理方法及模块.pdf》由会员分享,可在线阅读,更多相关《具有同步回调信息功能的数据异步处理方法及模块.pdf(8页珍藏版)》请在专利查询网上搜索。

本发明公开了一种具有同步回调信息功能的数据异步处理方法及模块,涉及异步数据处理领域。该方法的步骤为:创建一个指定最大线程数量的线程池pool,为每个数据异步处理任务的线程添加优先级后,加入pool;当pool中的线程启动时,返回当前线程对应的数据异步处理任务开始执行的信息;对当前线程按照预先设置的计时周期开始计时;通过pool调用当前线程开始工作,若当前线程在工作过程中发生异常,则确定并返回发生异。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1