同期Vector、HashTable、Collection
2186 ワード
package kr.or.didt.basic;
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
import java.util.Vector;
/*
* Vector, Hashtable 등 예전부터 존재하던 Collection 객체들은
* 내부에 동기화 처리가 되어 있다.
*
* 그런데, 최근에 새로 구성된 Collection 객체들은 동기화 처리가 되어 있지 않다.
* 그래서 동기화가 필요한 프로그램에서 이런 Collection들을 사용하려면
* 동기화 처리를 한 후에 사용해야 한다.
*
*/
public class ThreadTest18 {
//백터랑 리스트는 내부에 배열이 존재함
private static Vector<Integer> vec = new Vector<>();
//동기화 처리가 되지 않은 list
private static ArrayList<Integer> list1 = new ArrayList<>();
//동기화 처리를 한 list
private static List<Integer> list2 =
//조상쪽 인터페이스 이름
Collections.synchronizedList(new ArrayList<Integer>());
public static void main(String[] args) {
//익명 구현체로 쓰레드 구현
Runnable r = new Runnable(){
public void run() {
for (int i = 0; i < 10000; i++) {
// vec.add(i);
// list1.add(i);
list2.add(i);
}
}
};
//------------------------------------------------------------------------
Thread[] thArr = new Thread[]{
new Thread(r), new Thread(r), new Thread(r), //각각 쓰레드 한개씩 만개가 들어가야 되서 5만개가 들어가양됨
new Thread(r), new Thread(r),
};
for(Thread th : thArr){
th.start();
}
for(Thread th : thArr){
try {
th.join();
} catch (InterruptedException e) {
// TODO: handle exception
}
}
// System.out.println("vec 개수 : "+ vec.size());
// System.out.println("list1 개수 : "+ list1.size());
System.out.println("list2 개수 : "+ list1.size());
}
}
Reference
この問題について(同期Vector、HashTable、Collection), 我々は、より多くの情報をここで見つけました https://velog.io/@susan9905/Vector-Hashtable-Collection의-동기화テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol