线程安全的list有vector,Collections.synchronizedList,CopyOnWriteArrayList
后两者可以参考https://blog.youkuaiyun.com/zc19921215/article/details/86185963
CopyOnWrite适用于读多写少的场景,是以空间换时间的思想,由于add()中加了lock方法,并且还有Ararrys.copyOf,导致读快写慢
从JDK1.0开始,Vector
便存在JDK中,Vector
是一个线程安全的列表,底层采用数组实现。其线程安全的实现方式非常粗暴:Vector
大部分方法和ArrayList
都是相同的,只是加上了synchronized
关键字,这种方式严重影响效率,因此,不再推荐使用Vector
了
synchronizedList是对单独变量加锁,锁的力度比较小,适用于写多的场景
三者对比可以参考https://blog.youkuaiyun.com/lkxsnow/article/details/104130143/ 写的很好