多线程任务处理时,如何保证每个线程内部共享变量且线程间安全? 多线程任务,处理流程相同,每个线程任务对应一个配置文件,流程开始先读取配置文件加载数据到内存成为共享变量直到线程结束,请问如何保证每个线程内部共享变量的安全?:报错
首先要搞清楚配置文件之间的关系。
是一个线程只访问一个配置文件?还是一个线程可以访问所有的配置?
感觉你需要在共享变量这块进行解耦合。
1.你的这个配置是否肯定不会被修改。
如果是,那么可以考虑直接用单例模式。
2.变量是否是确定的?
如果不是,那么用单例模式的concurrentHashMap也行。
3.如果每个线程的配置文件都不一样,那么只能放在每个线程里面。
目前按你的介绍,应该只能用ThreadLocal,或者用ioc,把配置对象作为线程对象的构造函数的一个参数打进去。
######回复 @Kwin : 变量不需要绑定到线程啊。直接用单例模式。Config.getInstance().get("key")就行吧。######一个线程可以访问一个或者多个配置文件,主要是让线程知道自己的共享变量就行,这个变量封装的是一个索引库的信息,一个线程会多次调用这个索引库变量。。。。另外你说的concurrentHashMap,应该怎么动态封装这个变量并绑定到线程呢?######用threadlocal 可以添加jvm参数设置线程栈大小啊版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。