证明HashSet、HashMap线程不安全、如何变成线程安全
证明HashSet、HashMap线程不安全、如何变成线程安全
(1)证明HashSet线程不安全
public static void main(String[] args) { Set<String> set = new HashSet<>(); for (int i = 1; i <=30 ; i++) { new Thread(()->{ set.add(UUID.randomUUID().toString().substring(0,8)); System.out.println(set); },String.valueOf(i)).start(); } }
(2)HashSet线程安全改造
Set<String> set = new CopyOnWriteArraySet<>();
(3)证明HashMap线程不安全
public static void main(String[] args) { Map<String,String> map = new HashMap<>(); for (int i = 1; i <=30 ; i++) { new Thread(()->{ map.put(Thread.currentThread().getName() ,UUID.randomUUID().toString().substring(0,8)); System.out.println(map); },String.valueOf(i)).start(); } }
(4)HashMap线程安全改造
Map<String,String> map = new ConcurrentHashMap<>();
下一篇:
python 函数定义以及使用