Gor*_*Ape 3 java thread-safety
我正在扩展一个图书馆,为我做一些工作.这是代码:
public static synchronized String decompile(String source, int flags,UintMap properties,Map<String,String> namesMap)
{
Decompiler.namesMap=namesMap;
String decompiled=decompile(source,flags,properties);
Decompiler.namesMap=null;
return decompiled;
}
Run Code Online (Sandbox Code Playgroud)
问题是namesMap静态变量.该线程是否安全?因为如果这段代码运行得很简单,那么namesMap变量可能会改变.我能为此做些什么?
该方法 decompile是线程安全的(它永远不会被两个线程同时运行),但如果什么比方法等也使用了namesMap,那么没有,总体而言,这不是线程安全的:另一种方法等比decompile在不同的线程运行的可能在decompile方法使用时修改地图,可能会造成混乱.:-)
您可以查看java.util.concurrent命名空间中的类(例如,ConcurrentHashMap),看看是否有任何类适用于您正在执行的操作.
编辑如果静态成员(在回答您的评论.)namesMap是唯一使用过的decompile,而不是由其他任何(你不会对它的引用到别的,等等),那么你的罚款.它是一个静态的事实并不重要,如果它使用的唯一地方是序列化的.
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |