首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PicoContainer缓存可以是线程安全的吗?

PicoContainer缓存可以是线程安全的吗?
EN

Stack Overflow用户
提问于 2012-02-29 14:01:51
回答 1查看 432关注 0票数 0

我浪费了很多时间来弄清楚这里发生了什么,但我想我终于找到了一些东西。

我们有一些相当正常的PicoContainer代码,它们只是简单地打开缓存,我认为这应该导致单例行为:

代码语言:javascript
复制
container.as(Characteristics.CACHE).addComponent(Service.class, ServiceImpl.class);

然而,正如我们今天所发现的,我们有一个组件,显然不是一次,而是四次。这不是我可以在我自己的计算机上复制的东西,只能在其他开发人员的机器上复制。

我们进一步研究,发现多个线程同时访问PicoContainer来查找相同的组件,而不是实例化一个副本并让其他三个线程等待,它似乎只实例化了四个副本(然后只记得保留其中的一个副本)。

有没有什么相对简单的方法可以在PicoContainer中获得真正的奇异行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-29 14:18:15

对于您正在处理的情况,微微容器似乎需要显式的同步机制。Here is a link,它记录了这种行为,并提出了相应的解决方案。

引用此链接

当组件由两个线程并发创建时,出于对实例进行缓存的目的,在很小比例的情况下,缓存中的第一个实例可能会被第二个实例替换。

另一个值得访问的链接是关于caching的;

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9494265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档