Bootstrap

关于Java中ArrayList线程不安全的思考

在平时日常开发中,经常会根据不同的应用场景,使用到许多集合类比如List、Set、Map这些。对于个人而言,应用最为频繁的要数ArrayList,然而在偶然的一次机会接触到了一个这样的问题:ArrayList是否线程安全,如果不安全要怎么让它线程安全?

这个问题让我一整晚都百思不得其解,遂翻阅源码,啃之。

ArrayList线程是否安全?

通过源码注释的第一段就可以得知,这个ArrayList大致上都跟Vector差不多,唯一不同就是不是同步的。这个时候又引申出了一个叫做Vector的集合。

Vector的同步方式

简单地去看一下Vector的add方法和get方法,通过synchronized关键字使多线程对集合的操作变成串行的方式去执行,达成了同步的效果进而保证了线程安全。


那么如果我只想使用ArrayList而不是Vector呢?要怎么实现线程安全的问题?

这个时候,再回去注释上面翻看一下&#

;