如何在Java中使收集线程安全?
专用于集合的java.util包方法的Collections类,这些方法提供了涉及多态算法的各种附加操作。
此类提供了该synchronizedCollection()
方法的不同变体,如下所示-
此方法接受任何集合对象,并返回由指定集合支持的同步(线程安全)集合。
此方法接受列表接口的对象,返回由指定列表支持的同步(线程安全)列表。
此方法接受Map接口的对象,并返回由指定映射支持的同步(线程安全)映射。
此方法接受Set接口的对象,并返回由指定set支持的同步(线程安全)set。
此方法接受Map接口的对象,并返回由指定的排序图支持的同步(线程安全)排序图。
此方法接受serializedSortedSet接口的对象,并返回由指定排序集支持的同步(线程安全)排序集。
示例
import java.util.Collection; import java.util.Collections; import java.util.Vector; public class CollectionReadOnly { public static void main(String[] args) { //实例化ArrayList对象 Vector<String> vector = new Vector<String>(); vector.add("JavaFx"); vector.add("Java"); vector.add("WebGL"); vector.add("OpenCV"); System.out.println(vector); Collection<String> synchronizedVector = Collections.synchronizedCollection(vector); System.out.println("Synchronized "+synchronizedVector); synchronizedVector.add("CoffeeScript"); } }
输出结果
[JavaFx, Java, WebGL, OpenCV] Synchronized [JavaFx, Java, WebGL, OpenCV]