首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Beetle框架使用指南之-线程子程序及其施行方式

2012-10-24 
Beetle框架使用指南之--线程子程序及其执行方式子程序(SubRoutine)在BJAF框架中的定义是专门用来处理某一

Beetle框架使用指南之--线程子程序及其执行方式

子程序(SubRoutine)在BJAF框架中的定义是专门用来处理某一次的任务计算,处理完就结束。它本质上也是一个线程,只是这个线程执行一次就结束。另外,BJAF框架了,针对子程序实际运行情况,还实现了一个针对子程序任务执行的超时处理机制,用来解决由于某个任务长时间运行(超过预估的时间,或者死循环,阻塞挂起等)而无法及时线程回收的技术难题。
对于子程序,BJAF框架提供了线程池来优化其执行效率,同时对子程序的执行方式做了封装,(RoutineExecutor)提供做多不同执行方式。参见下面类图:
Beetle框架使用指南之-线程子程序及其施行方式

子程序说明示例
SubRoutine类说明如下:

方法与属性功能说明SubRoutine(maxBlockTime : int)构造函数,调用此构造函数实例化一个子程序,代表此子程序自动参与后台线程超时机制的监控。参数:maxBlockTime就是允许最大阻塞时间,单位为秒(S);如果任务执行超过这个时间,框架会对这个子程序进行超时中断处理。SubRoutine()构造函数,调用此构造函数实例化一个子程序,不参与后台线程超时机制监控。routine() : void子程序运行,为抽象方法,子程序执行任务技术所必须实现。setResult(result : Object) : void设置子程序返回结果 routine方法体内调用才有效。适合需要返回结果的子程序(带超时执行机制)
由RoutineExecutor.runRoutineForResult方法执行

例如,建一个简单子程序,处理任务是打印一下当前时间戳。代码如下:

构建3个子程序,代码分别为,SR1代码

此模型对于哪些计算量很巨大任务的处理很有帮助,我们可以把此任务按照一定的条件,分解成多个子任务,并行处理,从而加快任务处理速度。

??针对一组子程序,依次串行执行,并等待所有子程序结束后再返回

Beetle框架使用指南之-线程子程序及其施行方式

沿用前面的3个子程序,串行执行的客户端代码如下:

执行器还提供了一个runRoutineInTurnNoBlock()方法,不会阻塞主流程,让其在后台串行执行。
??先执行,后拿结果

当我们在主流程中处理多个任务,若这些任务中,有某个计算量很大,十分消耗时间,为了提高主流程的处理速度,我们可以把这个任务封装成子程序,先执行,主流程处理完其它任务后,再获取这个任务的结果。
示例代码如下:
编写一个HardWorkSR子程序:

?

?

执行结果如下:

?

热点排行