(1)使用Vector
(ArrayList
所有方法加synchronized
,太重)。
(2)使用Collections.synchronizedList()
转换成线程安全类。
Collection<Object> objects = Collections.synchronizedList(new ArrayList<>());
Set<String> stringSet = Collections.synchronizedSet(new HashSet<String>());
Map<Object, Object> synchronizedMap = Collections.synchronizedMap(new HashMap<>());
(3)使用java.concurrent.CopyOnWriteArrayList
(推荐)
CopyOnWriteArrayList<String> arrayList = new CopyOnWriteArrayList<>(); //list线程安全类
CopyOnWriteArraySet<String> set = new CopyOnWriteArraySet<>(); //set线程安全类
ConcurrentHashMap<String, Object> concurrentHashMap = new ConcurrentHashMap<>(); //map的线程安全类