- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我多次运行下面的代码时,下面的代码给出 ConcurrentModificationException
。当我使用非concurrentHashMap
时它工作正常。
public static void main(String[] args) {
Map<String, String> stringSyncedMap = Collections.synchronizedMap(new HashMap<String, String>());
CollectionJob collectionJob1 = new CollectionJob(stringSyncedMap, "read");
CollectionJob collectionJob2 = new CollectionJob(stringSyncedMap, "write");
Thread thread1 = new Thread(collectionJob1, "T1");
Thread thread2 = new Thread(collectionJob2, "T2");
thread1.start();
thread2.start();
}
}
public class CollectionJob implements Runnable {
private Map<String, String> stringCollection;
private String operation;
public CollectionJob(Map<String, String> stringCollection, String operation) {
this.stringCollection = stringCollection;
this.operation = operation;
}
public void run() {
if (operation.equals("read"))
readFromCollection();
else
writeToCollection();
System.out.println("done");
}
public void writeToCollection() {
for (int i = 10; i < 20; i++) {
stringCollection.put("String " + i, "String"+i);
}
public void readFromCollection() {
for (String str : stringCollection.keySet())
System.out.println(str);
}
}
我缺少什么。
最佳答案
与 ConcurrentHashMap
不同,当通过 Collections.synchronizedMap
惯用法初始化时,您需要显式同步 Map
,例如使用synchronized
关键字。
来自docs :
It is imperative that the user manually synchronize on the returned map when iterating over any of its collection views: [...]
关于java集合synchronizedMap不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33412583/
在Collections类中,SynchronizedMap类有两个构造函数。一个只需要一个 map 实例,另一个则需要一个 map 和一个 mutex。 SynchronizedMap(Ma
我有一个单例类,它有一个可以被多个线程同时访问的映射。有人可以检查下面的代码并告诉我它的线程安全吗?(注意:我不打算使用ConcurrentHashMap,而且很少调用printMap方法。)
我试图理解 SynchronizedMap 并运行了以下代码。我得到以下输出,但有一个异常(exception)。根据我的理解,当线程仍在映射上执行写入或线程处于 sleep 状态时,get() 方法
来自 javadocs Map m = Collections.synchronizedMap(new HashMap()); ... Set s = m.keySet(); //
什么时候应该更喜欢 Akka TransactionalMap与 SynchronizedMap 混合在一起的常规不可变映射反之亦然? (或者我在这里比较苹果和橙子?) 最佳答案 当您想要进行交易时,
假设我有一个类: public class MyMap implements Map, V> { ... } 我希望能够对其强制同步。一种方法是在内部同步方法(可能使用同步关键字),但如果我打算将
如果我同步 SynchronizedMap 会影响性能吗? 例如: private static Map intMap= Collections.synchronizedMap(new HashMap
如果我创建 map Map map=new HashMap(40,.75f); 通过以下两种不同的方式进行同步 Collections.synchronizedMap(map) :- which is
我想在 Collections.synchronizedMap 类型的 map 周围有第二个锁。我怎样才能拥有它? 最佳答案 尚不清楚为什么要这样做,但基本上是这样的: private Map map
当我将 Collections.synchronizedMap( ) 转换为 HashMap 时,它返回类转换异常,但是当我将 Map 转换为 HashMap 时,它工作正常。 根据我的理解 Coll
我的代码使用以下内容: public class Obj{ public String someOperation(){...} }; public class ClassA{ priva
在 Collections javadoc 中,它被提到如下.. 当遍历其任何 Collection View 时,用户必须在返回的 map 上手动同步: Map m = Collections.sy
今天我在面试中问了一个问题。问题是 Collections.synchronizedMap() 是用于同步 map,默认情况下它不像 hashmap 那样是线程安全的。他的问题是我们可以在这个方法中传
这个问题已经有答案了: Difference between Hashtable and Collections.synchronizedMap(HashMap) (6 个回答) 已关闭 9 年前。
Collections.synchronizedMap() 和所有方法同步的 HashMap 的包装器之间有什么区别。我没有看到任何区别,因为 Collections.synchronizedMap(
我指的是问题 here并使用作者代码示例,现在我的问题是 为什么作者使用synchronized(synchronizedMap),真的有必要吗,因为synchronizedMap总是确保没有两个线程
我没有看到使用 Collections.synchronizedList/synchronizedMap 的任何真正值(value),而且根据文档,我们需要在迭代期间同步列表/映射,这对性能不利。 我
我有一个Map,它将由多个线程同时修改。 Java API 中似乎存在三种不同的同步 Map 实现: 哈希表 Collections.synchronizedMap( map ) Concurrent
我在多线程代码之外创建了一个 HashMap 。以后这个 hasmap 不会有任何变化。 此后,我将启动两个线程,它们都将从该 HashMap 中读取(是的,仅读取操作)。如果线程1正在读取我的has
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我是一名优秀的程序员,十分优秀!