1、线程安全的集合(单列)怎么选择?
List、Set集合,线程安全的有哪些?
- Vector,有,但是基本不考虑。(synchronized同步方法)
- Collections.synchronizedList,也可以拿到线程安全的集合(synchronized同步代码块)
- CopyOnWrite系列。(lock锁)
如果数据体量贼大,不考虑读的问题,还需要保证线程安全?
答:
- 第一点,不能考虑CopyOnWrite。数据体量贼大,如果用CopyOnWrite会导致空间占用太多。
- 第二点,如果不在业务代码上实现锁的话,基本职能选择Collections.synchronizedList。
- 第三点,不采用JDK提供的线程安全的集合,自己通过代码,针对读写操作最针对性的加锁。
- 可以在业务带上中,去完成读写锁的操作
- 也可以仿照Collections.synchronizedList,直接做一个装饰者模式,套一层。