Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 컬렉션 스레드를 안전하게 만드는 방법은 무엇입니까?

<시간/>

컬렉션에 대해 독점적으로 작동하는 java.util 패키지 메서드의 Collections 클래스는 다형성 알고리즘과 관련된 다양한 추가 작업을 제공합니다.

이 클래스는 아래와 같이 synchronizedCollection() 메서드의 다양한 변형을 제공합니다. -

Sr.No 방법 및 설명
1 정적 컬렉션 synchronizedCollection(컬렉션 c)
이 메서드는 모든 컬렉션 개체를 허용하고 지정된 컬렉션에서 지원하는 동기화된(스레드 안전) 컬렉션을 반환합니다.
2 정적 목록 동기화된 목록(목록 목록)
이 메서드는 List 인터페이스의 개체를 허용하고 지정된 목록이 지원하는 동기화된(스레드 안전) 목록을 반환합니다.
3 정적 지도 synchronizedMap(Map m)
이 메소드는 Map 인터페이스의 객체를 받아들이고 지정된 맵이 지원하는 동기화된(스레드 안전) 맵을 반환합니다.
4 정적 Set synchronizedSet(Set s)
이 메서드는 Set 인터페이스의 개체를 받아들이고 지정된 집합이 지원하는 동기화된(스레드 안전) 집합을 반환합니다.
5 정적 SortedMap synchronizedSortedMap(SortedMap m)
이 메소드는 Map 인터페이스의 객체를 받아들이고 지정된 정렬 맵에 의해 지원되는 동기화된(스레드 안전) 정렬 맵을 반환합니다.
6 정적 SortedSet synchronizedSortedSet(SortedSet 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]