当我们在Vector
vs ArrayList
上共享教程时,我们已经讨论了一些关于同步的问题。我们知道ArrayList
是非同步的,不应在没有显式同步的多线程环境中使用。这篇文章将讨论如何在 Java 中同步ArrayList
。
显式同步有两种方法:
- 使用
Collections.synchronizedList()
方法 - 使用
ArrayList
的线程安全变体:CopyOnWriteArrayList
示例 1:用于同步ArrayList
的Collections.synchronizedList()
方法
在这个例子中,我们使用 Collections.synchronizedList()
方法。这里要注意的重点是迭代器应该在这种类型的同步中处于同步块中,如下例所示。
输出:
方法 2:使用CopyOnWriteArrayList
CopyOnWriteArrayList 是ArrayList
的线程安全变体。
输出: