gpt4 book ai didi

Java : Synchronization of code

转载 作者:行者123 更新时间:2023-11-30 05:51:07 25 4
gpt4 key购买 nike

我有如下所示的这段代码。我们的应用程序在 5 个由负载均衡器控制的 Web 服务器上运行,所有服务器都连接到一个 Memcache 实例。

我猜这部分同步只适用于一个实例。

请告诉我如何在 5 个 Web 服务器尝试访问 Memcache 时同步这段代码

public class Memcache {
private MemcachedClient memclient = null;
private static Memcache instance = null;

public static Memcache getInstance() {
if (instance == null) {
try {
synchronized (Memcache.class) {
instance = new Memcache();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return instance;
}

private Memcache() throws IOException {
MemcachedClientBuilder builder = new XMemcachedClientBuilder();
memclient = builder.build();

}

}

最佳答案

为什么不这样初始化呢?

private static Memcache instance = new Memcache();

请记住,您在此处同步时尝试实现的目标是有问题的,
由于两个线程可能会通过 (if (instance == null) (上下文切换可能在该行之后)
所以你可以考虑double check pattern ,
但是在某些版本的 java 中存在问题。
在我提供的链接中,有关于问题的信息,
this链接,您可以使用 volatile 关键字阅读有关 Singleton 的信息。

我仍然会选择上面建议的选项。

关于Java : Synchronization of code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13172434/

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