4-4.(4)Thread同期収集
11127 ワード
CollectionによるThread同期
内部に同期処理があります.
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());
}
}
1.同期を処理しない
private static List<Integer> list1 = new ArrayList<Integer>();
2.同期時
Collections.synchronizedList(new ArrayList<>());
private static List<Integer> list2 = Collections.synchronizedList(new ArrayList<>());
Reference
この問題について(4-4.(4)Thread同期収集), 我々は、より多くの情報をここで見つけました https://velog.io/@zhyun1220/4-44.-Thread-동기화-Collectionテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol