가자미의 개발이야기
[자바] 컬렉션 인스턴스 동기화 본문
public static <T> Set<T> synchronizedSet(Set<T> s)
public static <T> List<T> synchronizedList(List<T> list)
public static <K, V> Map<K, V> synchronizedMap(Map<K, V> m)
public static <T> Collection<T> synchronizedCollection(Collection<T> c)
//콜렉션 인스턴스를 동기화
컬렉션 인스턴스 동기화의 예
class SyncArrayList{
public static List<Integer> lst =
Collection.synchronizedList(new ArrayList<Integer>());
public static void main(String[] args) throws InterruptedException{
for(int i = 0; i<16;i++)
lst.add(i);
System.out.println(lst);
Runnable Task = ()->{
synchronized(lst) {//동기화 되지 않은 반복자 인스턴스를 활용해
//쓰레드를 활용하려면 동기화 되지 않음!!!
ListIterator<Integer> itr = lst.listIterator();
while(itr.hasNext())
itr.set(itr.next()+1);
}
};
ExecutorService exr = Executors.newFixedThreadPool(3);
exr.shutdown();
exr.awaitTermination(100,TimeUnit.SECONDS); //작업다 끝날때까지 100초 대기
}
}
'Java > 자바 기본 문법' 카테고리의 다른 글
[JAVA] 자바 재귀함수 활용 예시 (0) | 2021.03.30 |
---|---|
[자바] jdk 설치 이후 디렉토리 구조 (0) | 2021.03.02 |
[자바] 쓰레드를 생성하는 더 좋은 방법 (0) | 2021.03.02 |
[자바] 쓰레드의 동시접근 문제와 동기화 (0) | 2021.03.02 |
[자바] 쓰레드 생성과 실행 (0) | 2021.03.02 |