场景
当我们在多线程的环境下操作一个集合,比如 ArrayList或者Hashmap,这些集合默认情况下肯定是线程不安全的,如果说多个线程同时去读和写这些集合就会有线程安全问题。
好,问题来了,我们应该怎么让一个集合变成线程安全的呢?
一、synchronized 或者lock锁
有一个非常简单的办法,对这些集合的访问都加上线程同步的控制,或者说是加锁。
最简单的做法就是加一个Synchronized或者Lock锁。
我们假设就是用 ReadWriteLock 读写锁的方式来控制对这些集合的访问。
这样多个读请求可以同时执行从这些集合里读取数据,但是读请求和写请求之间互斥,写请求和写请求也是互斥的。
public Object read() {
lock.readLock().lock();
// 对集合的读操作
lock.readLock