Far*_*had 1 java static multithreading non-static
我的班级看起来像这样:
public Class A {
private static final ObjectMapper mapper = new ObjectMapper();
public String get(String key) {
JsonNode nod = mapper.readTree(getFromCache(key));
}
}
Run Code Online (Sandbox Code Playgroud)
多个线程将访问此方法.我需要同步它吗?我是否需要在方法中移动映射器?
这取决于实施ObjectMapper.有关可能的答案,请参阅:
我应该将Jackson的ObjectMapper声明为静态字段吗?
从您提供的代码示例中无法判断,因为我们不知道它ObjectMapper是什么.
要找到答案,您需要检查javadoc ObjectMapper.或者失败了,实施.
如果您不确定,您可以:
ObjectMapper在方法内创建一个新的,所以每次都有一个新对象,在JVM上创建对象非常便宜(除非他们执行昂贵的操作,如扫描类路径等).