跨线程调用链上下文的传递方法、装置及电子设备制造方法及图纸

技术编号:20545520 阅读:27 留言:0更新日期:2019-03-09 18:28
本发明专利技术公开了一种跨线程调用链上下文的传递方法、装置及电子设备,方法包括:定义预设线程类,预设线程类实现原生线程接口;利用类装载器构造预设线程类实例,修改对应的构造函数,以便将调用链上下文注入至预设线程类实例;利用类装载器加载预设线程类实例,并修改运行函数,以使调用预设线程类实例的其他线程获取到调用链上下文。本发明专利技术通过定义预设线程类,利用预设线程类实现原生线程接口,利用预设线程类实例替换原生线程接口,修改预设线程类实例对应的构造函数,注入调用链上下文,在运行时修改运行函数,以使调用预设线程类实例的其他线程获取到调用链上下文。本发明专利技术无需修改用户的业务代码,即可实现跨线程间调用链上下文的传递。

Transfer Method, Device and Electronic Equipment of Cross-Thread Call Chain Context

The invention discloses a method, device and electronic device for transferring context of cross-thread call chain, which includes: defining preset thread class, preset thread class realizing native thread interface; constructing preset thread class instance by class loader, modifying corresponding constructor, so as to inject the context of call chain into preset thread class instance; loading preset thread by class loader. Class instance, and modify the run function so that other threads calling the default thread class instance get the call chain context. By defining the preset thread class, using the preset thread class to realize the native thread interface, replacing the native thread interface with the preset thread class instance, modifying the corresponding constructor of the preset thread class instance, injecting the call chain context, and modifying the run function at run time to enable other threads calling the preset thread class instance to obtain the call chain context. The invention can transfer the context of call chain across threads without modifying the user's business code.

【技术实现步骤摘要】
跨线程调用链上下文的传递方法、装置及电子设备
本专利技术涉及软件领域,具体涉及一种跨线程调用链上下文的传递方法、装置及电子设备。
技术介绍
在分布式调用链系统中,调用链的上下文需要在Java应用进程间、线程间及线程内进行传递。在Java应用中,实现多线程的方式一般是通过Java并发框架,将线程的Runnable接口或Callable接口实现提交给并发框架执行。以开源的分布式调用链系统Zipkin为例,Zipkin对线程及线程池的的处理方法是对Runnable接口进行包装,在构造新的Runnable接口实现时,将调用链的上下文信息注入,在其他线程执行Runnable时,即可将父线程的调用链上下文取出。从而解决调用链上下文在跨线程时的传递的问题。但这种处理方式对业务代码有侵入,需要对业务代码进行修改,显式的创建新的Runnable接口或Callable接口实现,涉及修改的成本较大,花费较多人力和时间。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的跨线程调用链上下文的传递方法、装置及电子设备。根据本专利技术的一个方面,提供了一种跨线程调用链上本文档来自技高网...

【技术保护点】
1.一种跨线程调用链上下文的传递方法,其特征在于,所述方法包括:定义预设线程类,所述预设线程类实现原生线程接口,以便替换原生线程接口;利用类装载器构造预设线程类实例,修改对应的构造函数,以便将调用链上下文注入至所述预设线程类实例;利用类装载器加载预设线程类实例,并修改运行函数,以使调用所述预设线程类实例的其他线程获取到调用链上下文。

【技术特征摘要】
1.一种跨线程调用链上下文的传递方法,其特征在于,所述方法包括:定义预设线程类,所述预设线程类实现原生线程接口,以便替换原生线程接口;利用类装载器构造预设线程类实例,修改对应的构造函数,以便将调用链上下文注入至所述预设线程类实例;利用类装载器加载预设线程类实例,并修改运行函数,以使调用所述预设线程类实例的其他线程获取到调用链上下文。2.根据权利要求1所述的方法,其特征在于,在所述利用类装载器构造预设线程类实例,并修改构造函数,将调用链上下文注入至所述预设线程类实例之前,所述方法还包括:在类装载器加载线程池时,利用Java字节码类库将线程池的提交函数的参数由原生线程接口替换为预设线程类,以保障线程池执行所述预设线程类对应的预设线程类实例。3.根据权利要求1或2所述的方法,其特征在于,所述利用类装载器构造预设线程类实例,修改对应的构造函数,以便将调用链上下文注入至所述预设线程类实例进一步包括:利用类装载器构造预设线程类实例,并利用Java字节码操控框架在对应的构造函数中添加调用链上下文赋值函数,以便使用所述调用链上下文赋值函数将调用链上下文注入至所述预设线程类实例。4.根据权利要求1或2所述的方法,其特征在于,所述利用类装载器加载预设线程类实例,并修改运行函数,以使调用所述预设线程类实例的其他线程获取到调用链上下文进一步包括:在线程池执行所述预设线程类实例的运行函数时,利用Java字节码操控框架在所述运行函数中添加调用链上下文取值函数,以使调用所述预设线程类实例的其他线程利用所述调用链上下文取值函数获取到调用链上下文。5.一种跨线程调用链上下文的传递装置,其特征在于,所述装置包括:定义模块,适于定义预设线程类,所述预设...

【专利技术属性】
技术研发人员:刘文涛
申请(专利权)人:数贸科技北京有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1