gpt4 book ai didi

java - 非同步的 WeakHashMap 有害吗?

转载 作者:行者123 更新时间:2023-11-30 06:40:49 34 4
gpt4 key购买 nike

我有一个这样的代码。

private static Map<String, Pattern> PATTERNS;

private static Map<String, Pattern> patterns() {
if (PATTERNS == null) {
PATTERNS = new WeakHashMap<>(); // ok? or should be synchronized?
}
return PATTERNS;
}

// intending to reuse those pre-compiled patters
private static Pattern pattern(final String regex) {
return patterns().computeIfAbsent(
requireNonNull(regex, "regex is null"), Pattern::compile);
}

我已经知道 WeakHashMap 没有同步。我只是不关心 Pattern 的多重构造。

在多线程环境下,PATTERNS 是否应该同步?

最佳答案

Is a non-synchronized WeakHashMap harmful?

是的。您必须添加额外的保护才能跨线程使用 WeakHashMap

因此在 Javadoc 类中找到的建议:

A synchronized WeakHashMap may be constructed using the Collections.synchronizedMap method

PATTERNS = Collections.synchronized( new WeakHashMap<>() ) ;

参见 this Question .

关于java - 非同步的 WeakHashMap 有害吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57027764/

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