ArrayList和LinkedList是线程不安全的,因此我们下面介绍保证ArrayList线程安全的方法
使用ArrayList
- Vector
示例:**
List list = new ArrayList(); 替换为List arrayList = new Vector<>();** - Collections .synchronizedList(list)
示例:
List list = Collections .synchronizedList(new ArrayList());
操作外部list,实际上修改的是原来list的数据。
注意:因为数据没用volatile,所以用迭代器的地方需要加锁,间接用到迭代器的地方也要加锁,比如:toString、equals、hashCode、containsAll等
使用LinkedList
- Collections.synchronizedList(List)
示例:
public static List linkedList = Collections.synchronizedList(new LinkedList());
ps:ArrayList是线程不安全的原因说明后续有时间补充。