【发布时间】:2017-04-17 07:51:42
【问题描述】:
public void fooAndBar() {
HashMap<Foo, Bar> fooBarMap = new HashMap<>();
CompletionService completionService = new ExecutorCompletionService(exec);
for(int i=0; i<10; i++) {
completionService.submit(new Callable() {
@Override
public Void call() throws Exception {
fooBarMap.put(new Foo(i), new Bar(i));
return null;
}
});
}
}
修改
Callable内的HashMap安全吗?hashmap 应该是
final(或者volatile)吗?如果是,为什么?我应该使用
HashMap以外的结构,比如ConcurrentHashMap或SynchronizedMap,为什么?
我正在尝试掌握 Java 概念,所以请多多包涵
【问题讨论】:
标签: java multithreading java-threads