hooyantsing's Blog

13_ConcurrentHashMap

字数统计: 192阅读时长: 1 min
2020/08/26

13 ConcurrentHashMap

狂神说Java JUC并发编程最新版通俗易懂

HashMap 是线程不安全的

使Map线程安全的两种方式

  • Map<String,String> map = Collections.synchronizedMap(new HashMap<>()); 不安全Map 转 安全Map
  • Map<String,String> map = new ConcurrentHashMap<>(); 直接使用线程安全的 Set

    案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package unsafe;

import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

public class MapTest {
public static void main(String[] args) {
/**
* 解决方案:
* 1.Map<String,String> map = Collections.synchronizedMap(new HashMap<>()); 不安全Map 转 安全Map
* 2.Map<String,String> map = new ConcurrentHashMap<>(); 直接使用线程安全的 Map
*/

Map<String,String> map = new HashMap<>();
for (int i = 0; i < 10; i++) {
new Thread(
() -> {
map.put(Thread.currentThread().getName(),UUID.randomUUID().toString().substring(0,5));
System.out.println(map);
},String.valueOf(i)
).start();
}
}
}
CATALOG
  1. 1. 13 ConcurrentHashMap
    1. 1.1. 使Map线程安全的两种方式
      1. 1.1.1. 案例