如何在Java中使集合執行緒安全?
java.util包中的Collections類包含專門用於集合的方法,這些方法提供了各種附加操作,包括多型演算法。
此類提供同步Collection()方法的不同變體,如下所示:
| 序號 | 方法及說明 |
|---|---|
| 1 | static <T> Collection<T> synchronizedCollection(Collection<T> c) 此方法接受任何集合物件,並返回由指定集合支援的同步(執行緒安全)集合。 |
| 2 | static <T> List<T> synchronizedList(List<T> list) 此方法接受List介面的物件,並返回由指定列表支援的同步(執行緒安全)列表。 |
| 3 | static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) 此方法接受Map介面的物件,並返回由指定對映支援的同步(執行緒安全)對映。 |
| 4 | static <T> Set<T> synchronizedSet(Set<T> s) 此方法接受Set介面的物件,並返回由指定集合支援的同步(執行緒安全)集合。 |
| 5 | static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m) 此方法接受Map介面的物件,並返回由指定已排序對映支援的同步(執行緒安全)已排序對映。 |
| 6 | static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s) 此方法接受synchronizedSortedSet介面的物件,並返回由指定已排序集合支援的同步(執行緒安全)已排序集合。 |
示例
import java.util.Collection;
import java.util.Collections;
import java.util.Vector;
public class CollectionReadOnly {
public static void main(String[] args) {
//Instantiating an ArrayList object
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]
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP