在我们写程序的过程中,往往会经常遇到一些常见的功能。而这些功能或效果往往也是相似的,解决方案也相似。下面是我在写代码的过程中总结的一些有用的代码片段。

1、在多线程环境中操作同一个Collection,会出现线程同步的问题,甚至有时候会抛出异常

解决方案:使用Collections.synchronizeMap(),并使用如下代码访问或者删除元素

 1 public class ConcurrentMap {
 2     private Map<String, String> map = Collections.synchronizedMap(new HashMap<>());
 3 
 4     public synchronized void add(String key, String value) {
 5         map.put(key, value);
 6     }
 7 
 8     public synchronized void remove(String key) {
 9         Set<Map.Entry<String, String>> entries = map.entrySet();
10         Iterator<Map.Entry<String, String>> it = entries.iterator();
11         while (it.hasNext()) {
12             Map.Entry<String, String> entry = it.next();
13             if (key.equals(entry.getKey())) {
14                 it.remove();
15             }
16         }
17     }
18 
19     public synchronized void remove2(String key) {
20         Set<Map.Entry<String, String>> entries = map.entrySet();
21         entries.removeIf(entry -> key.equals(entry.getKey()));
22     }
23 }
View Code

相关文章:

  • 2021-08-16
  • 2021-05-28
  • 2021-09-29
  • 2021-06-22
  • 2021-08-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-08-02
  • 2021-12-24
  • 2022-12-23
  • 2021-06-10
  • 2021-10-06
  • 2021-11-14
  • 2022-12-23
相关资源
相似解决方案