在开发中我们使用比较多的集合就是List、Set和Map了,并且我们也知道大部分用的基本上都是ArrayList、LinkedList、HashMap、HashSet或者TreeSet这几个集合。

但是我们在学习使用它们的时候都知道它们这几个在并发处理的时候并不会保证多线程的安全访问,也就是说多线程环境下使用这几个集合不能用于共享数据访问。

那有没有一些方法保证这些集合并发安全访问呢?

  1. Collections工具类并发的支持

其实java有一个叫做Collections的工具类提供了一些保证List、Set、Map线程安全方法的方法,如下图:

其实通过其名称也不难猜想底层是使用了synchronized关键完成的同步代码块或者同步方法的实现。

其任意一个方法的源码如下(以List为例):