remove()メソッドを使用していますか?同期メソッドがremoveメソッドに追加されていないという記事を読んだ。 ConcurrentHashMapから固有のアイテムを正しく削除するにはどうすればよいですか?Java ConcurrentHashMapから特定の項目を削除します
コード例:
ConcurrentHashMap<String,Integer> storage = new ConcurrentHashMap<String,Integer>();
storage.put("First", 1);
storage.put("Second", 2);
storage.put("Third",3);
//Is this the proper way of removing a specific item from a tread-safe collection?
storage.remove("First");
for (Entry<String, Integer> entry : storage.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
// ...
System.out.println(key + " " + value);
}
"私は同期がremoveメソッドに追加されていないという記事を読みました"その記事はJava 5,6,7、または8の時代について書かれていますか?たぶん古いJava版を念頭に置いて書いたのかもしれません。 –
うまくいけば、このリンクはhttp://javarevisited.blogspot.ca/2013/02/concurrenthashmap-in-java-example-tutorial-working.htmlで動作します。彼は「put()、remove()、putAll()、またはclear()のような更新操作は同期していないので、 続きを読む:http://javarevisited.blogspot.com/2013/02/concurrenthashmap-in-java- example-tutorial-working.html#ixzz3OM79B2ol " –
@ peter.petrov - コード例で行ったように、ConcurrentHashMapでremoveメソッドを呼び出すのは問題ありません。スレッド安全性は問題ではありませんか? –