gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:56:58 25 4
gpt4 key购买 nike

花了很多时间试图弄清楚这里发生了什么,但我想我终于明白了一些事情。

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

container.as(Characteristics.CACHE).addComponent(Service.class, ServiceImpl.class);

然而,正如我们今天发现的那样,我们有一个组件显然不是被构建了一次,而是被构建了四次。这不是我可以在自己的计算机上重现的东西,只能在其他一些开发人员的计算机上重现。

我们进一步调查,结果发现多个线程同时访问 PicoContainer 来查找同一个组件,并且它没有实例化一个副本并让其他三个线程等待,而是只实例化了四个副本(然后只记得保留其中一个。)

是否有一些相对简单的方法可以在 PicoContainer 中获得真正的奇异行为?

最佳答案

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

引用此链接

When components are created by two threads concurrently, with the intention of the instance being cached, it is possible in a small percentage of cases for the first instance into the cache to be replaced with a second instance.

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

关于java - PicoContainer 缓存可以是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9494265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com