Java教程

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

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4