欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

集合类线程不安全

时间:2023-07-01

集合类不安全

1.ArrayList

import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; //ConcurrentModificationException并发修改异常 public class ListTest { public static void main(String[] args) { //并发下ArrayList安全吗? //List list=new Vector<>(); //List list= Collections.synchronizedList(new ArrayList<>()); List list=new CopyOnWriteArrayList<>(); for (int i = 0; i < 10; i++) { new Thread(()->{ list.add(UUID.randomUUID().toString().substring(0,5)); System.out.println(list); },String.valueOf(i)).start(); } } }

2.HashSet

import java.util.Collections; import java.util.HashSet; import java.util.Set; import java.util.UUID; import java.util.concurrent.CopyOnWriteArraySet; //ConcurrentModificationException:并发修改异常 public class HashSetTest { public static void main(String[] args) { //HashSet set = new HashSet<>(); Set set=new CopyOnWriteArraySet<>(); for (int i = 0; i < 30; i++) { new Thread(()->{ set.add(UUID.randomUUID().toString().substring(0,5)); System.out.println(set); },String.valueOf(i)).start(); } } }

3.HashMap

import java.util.HashMap; import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; //ConcurrentModificationException:并发修改异常 public class HashMapTest { public static void main(String[] args) { //线程不安全 //Map map=new HashMap<>(); Map map= new ConcurrentHashMap<>(); for (int i = 0; i < 30; i++) { new Thread(()->{ map.put(Thread.currentThread().getName(), UUID.randomUUID().toString().substring(0,5)); System.out.println(map); },String.valueOf(i)).start(); } } }

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。