gpt4 book ai didi

java - 当其他线程可以访问它时从数据库更新静态映射

转载 作者:行者123 更新时间:2023-11-29 05:58:15 25 4
gpt4 key购买 nike

class A {
static Map<String,ColA> mapA;
static const int a = 12;
static Map<String,colB> mapB;
}

Q1>现在我需要每 10 分钟从数据库更新一次 map 。可以有多个线程可以访问 mapA。因此,如果我使用 synchronized 在其中一个线程中进行更新,那么在进行更新时,线程可能会中断的情况会怎样。如果是怎么解决这个问题??

Q2>我也有不同的类(class)成员。其中有些是常量,有些是从内存中加载的。然而,他们都有一个共同的属性(property)。对于所有实例(静态),它们始终相同。那么,将所有内容都放在一个类中是否有意义,还是我们应该有两个单独的类?

谢谢

最佳答案

Now I need to update the Map from database in every 10 minutes. There can be multiple thread which can be accessing mapA. So if i update in one of the thread using synchonized how will there be any instance where the thread may break when the updation is going on. If so how to solve this problem??

这听起来像是值得使用 AtomicReference 的地方。从数据库中获取数据,将其放入 map 中,然后以原子方式将其与“旧” map 交换。这样任何客户端代码都可以获取 map 并知道它实际上是一个不会在它们下更改的快照。

Also I have different member of the class. Some of them are constants and some of them are loaded from memrory. However all of them have one common property. They are always same for all the instances(static). So does it make sense to have everything in one class or should we have two seperate class.

这是一个相当模糊的描述。您指定的所有属性(一些是常量,一些是从内存中加载的,都具有一个共同的属性,都是静态的)与它们是否应该在同一个类中没有任何关系。

关于java - 当其他线程可以访问它时从数据库更新静态映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11193242/

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