Java Collections syncedCollection()
Java集合类的
synchronizedCollection()方法用于获取支持的同步(线程安全)集合
语法
以下是
synchronizedCollection()方法的声明:
public static <T> Collection<T> synchronizedCollection(Collection<T> c)
参数
参数 |
说明 |
必需/可选 |
c |
这是要在同步集合中"包装"的集合。 |
必需 |
返回
synchronizedCollection()方法返回指定集合的同步视图。
异常
NA
兼容版本
Java 1.5及更高版本
示例1
import java.util.*;
public class CollectionsSynchronizedCollectionExample1 {
public static void main(String[] args) {
//Create vector object
Vector<String> vector = new Vector<String>();
//Add values in the vector
vector.add("A");
vector.add("B");
vector.add("C");
vector.add("D");
vector.add("E");
//Create a synchronized view
Collection<String> coll = Collections.synchronizedCollection(vector);
System.out.println("Synchronized view is :"+coll);
}
}
输出:
Synchronized view is :[A, B, C, D, E]
示例2
import java.util.*;
public class CollectionsSynchronizedCollectionExample2 {
public static void main(String[] args) {
//Create a list with items
List<Integer> list = Arrays.asList(44, 55, 99, 77, 88, 66);
//Create a synchronized view
Collection<Integer> coll = Collections.synchronizedCollection(list);
System.out.println("Synchronized view is :"+coll);
}
}
输出:
Synchronized view is :[44, 55, 99, 77, 88, 66]
示例3
import java.util.*;
public class CollectionsSynchronizedCollectionExample3 {
public static void main(String[] args) {
Collection<String> obj = new ArrayList<>();
obj.add("lidihuo"); // not thread safe
Collection<String> synObj = Collections.synchronizedCollection(obj);
synObj.add("SSSIT"); // thread safe
//Below iteration will result in non-deterministic behavior
Iterator<String> ite1 = synObj.iterator();
while (ite1.hasNext()) {
String s = ite1.next();
System.out.println(s);
}
//Below code is the right way to iterate synchronized collection
synchronized(synObj) {
Iterator<String> ite2 = synObj.iterator();
while (ite2.hasNext()) {
String s = ite2.next();
System.out.println(s);
}
}
}
}
输出:
lidihuo
SSSIT
lidihuo
SSSIT