[发明专利]一种通过线程管理提高多任务处理效率的方法有效
申请号: | 201010517150.1 | 申请日: | 2010-10-22 |
公开(公告)号: | CN102455933A | 公开(公告)日: | 2012-05-16 |
发明(设计)人: | 张利 | 申请(专利权)人: | 深圳市科陆电子科技股份有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 广州中浚雄杰知识产权代理有限责任公司 44254 | 代理人: | 周永强 |
地址: | 518000 广东省*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 通过 线程 管理 提高 任务 处理 效率 方法 | ||
技术领域
本发明涉及JAVA平台的多任务事件处理领域。
背景技术
线程(thread),有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。
线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。在软件系统开发中,在系统开发过程中经常会用到多线程处理不同的任务事件,多个线程创建造成系统资源利用不高,线程管理混乱,线程处理耦合性高,造成开发效率低下,出现问题很难定位,经常会有莫名奇妙错误出现,并且对于线程开发代码有一定重复性,减低工作效率。
发明内容
本发明所要解决的技术问题是提供一种通过线程管理提高多任务处理效率的方法,在一个单线程任务调度器中,任务调度器就根据任务对象优先级调用优先级高的任务对象异步事件处理防范,从而减少系统资源的开支,减少任务对象开发工作;可以将业务开发工作放在处理逻辑中,避免了重复进行线程处理的工作,提高了工作效率。
为解决上述技术问题,本发明的技术方案是:一种通过线程管理提高多任务处理效率的方法,在JAVA平台的任务管理系统中,利用单线程中的任务对象来实现多线程操作,具体方法如下:
S101)创建任务调度器;
S102)创建任务对象,并将其添加到任务调度器中注册;
S103)启动任务调度器;
S104)任务调度器通过异步函数处理不同任务事件;
S105)异步处理完任务事件,通知任务对象处理结果;
S106)任务对象向任务调度器发起注销请求,从任务调度器中去掉任务对象。
本发明的通过在多任务多线程开发过程中预先定义好单线程多任务处理方式,在一个单线程任务调度器中,只需集成任务对象基类,并重写事件处理方法,并将任务对象添加到任务调度器中,任务调度器就可以根据任务对象优先级调用优先级高的任务对象异步事件处理防范,从而减少系统资源的开支,减少任务对象开发工作;可以将业务开发工作放在处理逻辑中,提高了工作效率。
作为改进,所述步骤S101)中,任务调度器提供标准任务对象注册接口和处理任务对象接口。
作为改进,所述步骤S102)中,任务调度器接收服务提供者发送的异步事件并将其分发到任务对象。
作为改进,所述步骤S102)中,任务调度器调用Add()静态函数将任务对象添加到调度队列中。
作为改进,所述步骤S102)中,任务对象继承与任务对象一个抽象类,其派生任务对象类必须实现DoCancel()函数和RunL()函数,DoCancel()函数用于取消异步请求,RunL()函数就是任务对象的事件处理函数。
作为改进,所述步骤S102)中,将任务对象设定优先级,任务对象的运行是非抢占式的,当一个任务对象的RunL()执行时,任务调度器就无法分发其他异步事件,两个任务对象不会同时运行。
作为改进,所述步骤S103)中,向任务调度器发送异步请求,启动任务调度器,并由任务调度器分发的任务对象异步事件进行处理,同时将任务对象设置为激活状态。
作为改进,所述步骤S104)中,任务调度器最先接收到该异步请求,随后从任务队列中选出处于激活状态而且优先级最高的任务对象,将其状态设置为非激活的,然后将事件分发给他处理。
作为改进,所述步骤S105)中,任务调度器根据RunL()执行的结果,向任务对象发起通知事件,通知处理事件的结果状态,任务调度器还会捕获RunL()函数抛出的异常,并调用任务对象的RunError()函数处理该异常。
作为改进,所述步骤S106)中,任务对象提供Deque()函数将任务对象从任务调度器中的队列上移除,在移除之前,Deque()函数会调用Cancel()函数取消异步请求。
本发明与现有技术相比所带来的有益效果是:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市科陆电子科技股份有限公司,未经深圳市科陆电子科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010517150.1/2.html,转载请声明来源钻瓜专利网。