[发明专利]Applet线程模型及基于Applet线程模型的调用构件的方法无效
申请号: | 200810208053.7 | 申请日: | 2008-12-29 |
公开(公告)号: | CN101770395A | 公开(公告)日: | 2010-07-07 |
发明(设计)人: | 陈榕;宋世军 | 申请(专利权)人: | 上海科泰世纪科技有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 201203 上海市张江高*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | applet 线程 模型 基于 调用 构件 方法 | ||
技术领域
本发明是关于一种计算机构件化软件之间的调用方法,尤其是指 构件之间的基于一种线程模型的调用方法及该种线程模型。
背景技术
每个Applet构件可以看作是一个独立的应用,一个自封闭的运行 空间,即便是同一个进程内的Applets,它们之间的数据也是相对独立 的,各自有专属的线程执行各自的代码,有着清晰的Applet边界。
但是当Applet之间发生调用关系时,比如一个通讯录的Applet可 能会调用Email的Applet来完成“点击通讯录中Email地址直接弹出 编辑新邮件”的功能,类似的Applet之间调用可能还有很多,对于一 个Applet来说,如果它的功能实现可能被多个Applet并发调用,或者 说它的代码可能会运行在不同的Applet这中,可能会给Applet实现者 造成诸多难以预计的困难和假设。首先要考虑多线程并发调用的互斥 关系,对于一个功能简单的Applet来说,它可能只需要一个Applet主 线程即可完成所有功能,但却要为了防止被其它Applet调用而考虑多 线程问题;再比如,进程内所有线程都属于某个Applet,那么任意Applet 的成员方法里调用Api获得当前Applet的句柄都应该是它所属的 Applet,但由于Applet可能被其它Applet调用,所以它获得的Applet 句柄不确定是哪个Applet,如果它的功能实现方法对此有依赖,处理 起来就比较复杂。因此Applet在互相调用存在多线程并发调用的问题。
其实Applet可以看作一个轻量级的进程。而进程之间的调用过程 是这样的:跨进程调用时,发起调用的一方的调用线程等待在被调用 一方的进程边界,由被调用一方的进程内线程完成调用,并将结果返 回给调用一方等待中的线程,完成一次跨进程调用。
发明内容
鉴于以上内容,有必要提供一种Applet线程模型及基于该线程模 型的构件调用的方法。
所述Applet线程模型包括:Applet构件和具有Applet属性的构件; 属于该Applet构件的消息队列及回调线程。
其中,Applet构件和具有Applet属性的构件都具备夹壁墙和一个 Event对象。所述夹壁墙用来拦截和存放调用方构件的调用请求线程。 所述Applet构件用于将调用请求打包成一个调用消息包,通过投递回 调机制将该调用消息包投递到所述消息队列等待处理;所述回调线程 用于当从消息队列接收到该调用消息包时,调用并执行所述目标接口 方法,将执行结果返回给等待在所述构件夹墙壁中的调用请求线程, 并激发该构件的Event对象;所述Event对象用于被回调线程激发后, 通知被拦截在所述构件夹壁墙里进行等待的调用请求线程去获取执行 结果以将该执行结果返回给调用方构件。
所述基于该Applet线程模型的构件调用方法包括步骤:目标构件 利用编译工具生成打包函数,该打包函数经编译生成DLL可执行文 件;创建该目标构件对象,调用方构件向该创建的目标构件对象发出 调用请求;拦截该调用请求并将其存放在目标构件的夹壁墙,由打包 函数将该调用请求打包成一个调用消息包;目标构件对象利用投递回 调事件的机制将上述调用消息包投递到其所属的消息队列中;当消息 队列处理到该调用消息包时,回调线程从该消息队列接收该调用消息 包;该回调线程调用并执行所述的目标接口方法,将执行结果返回给 等待在所述夹壁墙里的调用请求,并触发该目标构件对象的Event对 象;该Event对象通知该调用请求去获取返回的执行结果,该调用请 求将获取的执行结果返回给调用方构件。
本发明利用构件所特有的夹壁墙技术,将所有针对Applet和具有 Applet属性的构件对象的接口方法的调用,都在夹壁墙中拦截,再将 调用的参数和被调用的接口方法的信息一起打包,通过投递回调事件 的机制向被调用的Applet的消息队列中投递此次调用事件。此时调用 线程进入等待状态,当被调用的Applet的消息循环处理到这次调用事 件时,由Applet的回调线程执行目标接口方法,执行完成后再将结果 返回给等待在夹壁墙的调用线程,再由它返回给调用方的Applet,由 此完成一次完整的调用。
利用本发明可以解决Applet彼此调用时多线程问题,加强Applet 之间的独立性,使得外界对Applet数据结构的访问和接口方法的调用 只能通过Applet自己的线程来完成。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海科泰世纪科技有限公司,未经上海科泰世纪科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810208053.7/2.html,转载请声明来源钻瓜专利网。