工作总总结1 - osgi插件多并发产生的问题解决思路

背景:

1、项目中使用的osgi搭建的插件框架,各自负责各自的插件开发,提供接口;

2、Activator中实例化并注册接口实现的类;

问题:

任务调度的时,采取的多线程方式,同时多个任务采集、入库、出库、解析、下载等操作;

出现以下问题:1、数据库对象被前面的任务关闭,导致后面任务无法对数据库操作;

2、不同的采集任务出库解析后,存储位置混乱;

3、数据入库不完整;

4、各个插件的全局变量不会释放。

原因分析:

1、osgi注册进的对象,在框架启动的时候进行,都存储在context的上下文中,结果导致永久只有一个对象;

2、多线程共享一个对象,并对对象进行操作,造成各个线程出问题;

解决办法:

1、优化方法:在多线程中,被调度的类中尽量不要存在全局变量;

2、根本解决:注册进osgi的对象为工厂类,调用接口是使用工厂的getInstance获取相应的实例。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值