사용자 도구

사이트 도구


java:collection

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:collection [2015/11/13 12:57]
kwon37xi
java:collection [2020/08/05 17:33] (현재)
kwon37xi
줄 1: 줄 1:
 ====== Java Collection ====== ====== Java Collection ======
 +  * [[http://www.eclipse.org/collections/|Eclipse Collections]]
 +  * [[https://www.baeldung.com/java-collection-remove-elements|Removing Elements from Java Collections | Baeldung]]
 +  * [[http://dveamer.github.io/backend/JavaConcurrentCollections.html|Java Thread Safe Collections - List, Queue, Set, Map]]
 +  * [[https://www.baeldung.com/java-synchronized-collections|An Introduction to Synchronized Java Collections | Baeldung]]
 +
 +
 ===== Set ===== ===== Set =====
 ==== Concurrent Set ==== ==== Concurrent Set ====
   * 동시접근이 필요한 Set 은 두가지 방식으로 만들 수 있다.   * 동시접근이 필요한 Set 은 두가지 방식으로 만들 수 있다.
-  * [[http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#synchronizedSet%28java.util.Set%29|java.util.Collections#synchronizedSet(java.util.Set<T>)]] : 동기화된 Set 객체를 리턴한다. 하지만 **모든 요청을 ''synchronized''로 처리해서 성능이 떨어진다.+  * [[http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#synchronizedSet%28java.util.Set%29|java.util.Collections#synchronizedSet(java.util.Set<T>)]] : 동기화된 Set 객체를 리턴한다. 하지만 **모든 요청을 ''synchronized''로 처리해서 성능이 떨어진다.**
   * [[http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Sets.html#newConcurrentHashSet%28%29|com.google.common.collect.Sets#newConcurrentHashSet()]] : [[http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentHashMap.html|ConcurrentHashMap]]을 이용해 동기화된 Set을 생성한다. 성능상 더 유리하다고 한다.<code java>   * [[http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Sets.html#newConcurrentHashSet%28%29|com.google.common.collect.Sets#newConcurrentHashSet()]] : [[http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentHashMap.html|ConcurrentHashMap]]을 이용해 동기화된 Set을 생성한다. 성능상 더 유리하다고 한다.<code java>
 // 동기화된 Set 생성 원리 // 동기화된 Set 생성 원리
-ConcurrentHashMap<E, BooleanconcurrentHashMap = new ConcurrentHashMap<E, Boolean>()+Set<E> concurrentSet Collections.newSetFromMap(new ConcurrentHashMap<E, Boolean>());
-Set<E> concurrentSet = Collections.newSetFromMap(concurrentHashMap);+
 </code> </code>
 +
 +==== List ====
 +=== CopyOnWriteArrayList ===
 +  * [[https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CopyOnWriteArrayList.html|CopyOnWriteArrayList]]
 +  * ''synchronized'' 없이 멀티 쓰레드에서 안전하게 작동하는 List.
 +  * iteration을 돌 때 가지고 있던 내용을 복제하여, 다른 쓰레드로 인한 변경 영향을 받지 않게 한다.
 +  * 성능이 떨어진다.
 +  * [[https://www.baeldung.com/java-copy-on-write-arraylist|Guide to CopyOnWriteArrayList | Baeldung]]
 +
 +
java/collection.1447388867.txt.gz · 마지막으로 수정됨: 2015/11/13 12:57 저자 kwon37xi