T18_SyncCollectionTest
public class T18_SyncCollectionTest {
private static List<Integer> list1 = new ArrayList<Integer>();
//동기화하는경우
//Collections의 정적메서드 주에서 synchronized로 시작하는 메서드 이용.
private static List<Integer> list2 = Collections.synchronizedList(new ArrayList<>());
public static void main(String[] args) {
//익명 클래스로 쓰레드 구현
Runnable r = new Runnable() {
public void run() {
for(int i =1; i<=10000; i++) {
//list1.add(i);//동기화 처리를 하지 않은 리스트 사용
list2.add(i);
}
}
};
Thread[] ths = new Thread[] {
new Thread(r),new Thread(r),
new Thread(r),new Thread(r),new Thread(r)
};
long startTime = System.currentTimeMillis();
for(Thread th : ths) {
th.start();
}
for(Thread th : ths) {
try {
th.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
long endTime = System.currentTimeMillis();
System.out.println("처리 시간(ms)"+(endTime-startTime));
// System.out.println("list1의 개수 : "+list1.size());
System.out.println("list2의 개수 : "+ list2.size());
}
}
private static List<Integer> list1 = new ArrayList<Integer>();
private static List<Integer> list2 = Collections.synchronizedList(new ArrayList<>());