1.容器的同步控制: 多线程并发访问集合的线程安全
- 常用容器
ArrayList
HashSet
HashMap
等都是线程不安全的
-
Collections
提供了synchronizedXxx()
方法,将指定容器包装成同步
synchronizedList
synchronizedSet
synchronizedMap
public void test1() {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
// 可以同步
List<String> list1 = Collections.synchronizedList(list);
}
2.不可变设置:"只读访问",Collections
提供了三种方法
-
emptyXxx()
空的不可变的集合
-
singletonXxx()
一个元素不可变的集合
-
unmodifiableXxx()
不可修改的容器
public void test1() {
Map<String,String> map = new HashMap<>();
map.put("a","a");
map.put("b","b");
// 只允许读
Map<String,String> map1 = Collections.unmodifiableMap(map);
}
public static Set<String> oper(Set<String> set) {
if (set == null) {
return Collections.EMPTY_SET; // 外部获取避免空对象
}
return set;
}