学习Java集合类时我们就知道,ArrayList、HashMap等不是线程安全的,那么如何线程安全的操作这些集合类呢?前面我们学习过synchronized
线程同步代码块和Lock
锁接口,不过实际上对于集合类的操作我们没必要自己实现这些同步机制,JDK提供了一些线程安全的集合类供我们使用。
CopyOnWriteArrayList 线程安全数组:JDK1中具备线程安全的数组Vector
对象,不过现在更推荐的是使用CopyOnWriteArrayList
,两者底层实现有一些区别,后者在大部分场景下能实现更好的并发性能。
ConcurrentHashMap 线程安全哈希表:ConcurrentMap能够实现线程安全的Map对象,ConcurrentMap在插入对象时并不对把整个Map锁住,因此比单纯的锁住Map对象实现线程安全更加高效。