在Java中,有两种同步ArrayList的方法,
借助synchronizedList()
方法
借助CopyOnWriteArrayList <T>方法
此方法在java.util包中可用。
借助此方法,我们可以使ArrayList同步。
这是一个静态方法,也可以使用类名进行访问。(即,如果我们尝试使用类对象进行访问,则不会得到任何错误或异常)。
在同步ArrayList时,此方法不会引发任何异常。
语法:
public static List synchronizedList(List list);
参数:
list –表示要绑定到同步列表中的ArrayList。
返回值:
该方法的返回类型为List,它返回给定列表的同步视图。
示例
//Java程序演示的例子 //同步ArrayList import java.util.*; public class SynchronizeArrayList { public static void main(String[] args) { //ArrayList---声明 ArrayList al = new ArrayList(); //添加一些元素 //ArrayList--- al.add(10); al.add(20); al.add(30); al.add(40); al.add(50); //显示ArrayList- System.out.print("Display ArrayList : " + " "); System.out.println(al); Collections.synchronizedList(al); synchronized(al) { Iterator itr = al.iterator(); System.out.println("Display synchronized ArrayList:"); while (itr.hasNext()) System.out.println(itr.next() + " "); } } }
输出结果
Display ArrayList : [10, 20, 30, 40, 50] Display synchronized ArrayList: 10 20 30 40 50
CopyOnWriteArrayList是一个同步的线程安全类。
对于CopyOnWriteArrayList,允许多个线程进行处理。
它适用于其他克隆副本以进行更新操作。
在一个线程中迭代CopyOnWriteArrayList对象,同时另一个线程可以修改,因为它可以在单独的克隆副本上工作。
示例
//Java程序演示的例子 //同步ArrayList import java.util.*; import java.util.concurrent.*; public class SynchronizeArrayList { public static void main(String[] args) { //CopyOnWriteArrayList声明 CopyOnWriteArrayList < Integer > cowal = new CopyOnWriteArrayList < Integer > (); //添加一些元素 //CopyOnWriteArrayList- cowal.add(10); cowal.add(20); cowal.add(30); cowal.add(40); cowal.add(50); //显示ArrayList- System.out.print("Display CopyOnWriteArrayList : " + " "); System.out.println(cowal); //迭代ArrayList Iterator < Integer > itr = cowal.iterator(); System.out.println("Display synchronized ArrayList:"); while (itr.hasNext()) System.out.println(itr.next() + " "); } }
输出结果
Display CopyOnWriteArrayList : [10, 20, 30, 40, 50] Display synchronized ArrayList: 10 20 30 40 50