同步控制:多线程并发访问集合的线程安全。
1、常用容器ArrayList,HashSet,HashMap等都是线程不安全的。
2、Collections类提供了synchronizedXXX()方法,将指定的容器包装成同步的。
- synchronizedList()
- synchronizedSet()
- synchronizedMap()
至于什么是线程安全的,随后补充。
只读设置
Collections提供了三个方法
- emptyXxx() 返回一个空的不可变的集合(可用于避免空指针异常)
- singleXxx() 返回一个只有一个元素的不可变的集合
- unmodifiableXxx() 返回一个不可变容器
注意:这只是返回一个原有集合的不可变快照,对此快照操作会显示java.lang.UnsupportedOperationException异常。但对原集合操作确实可行的,而且会改变此快照。所以这是不安全的。
guava
guava开源框架对只读的设置就比较安全,并且操作相对简单。
ImmutableList.of(E e);即可返回一个只读的集合。参数可以为很多个。