티스토리 뷰
- [출처 : http://www.thinkingparallel.com/2007/07/31/10-ways-to-reduce-lock-contention-in-threaded-programs/
- http://www.ibm.com/developerworks/java/library/j-jtp08223/
- http://agbird.egloos.com/4849046]
하아.. 어렵네;;;
머.. 암튼 써봐야지..
==========참고========================================================================
public class ConcurrentHashMap<K, V> - extends AbstractMap <K, V>
- implements ConcurrentMap <K, V>, Serializable
취득의 완전한 동시성 및 예상되는 조정 가능한 갱신 동시성을 지원하는
해시 테이블. 이 클래스는
Hashtable
와 같은 기능 사양에 따라,Hashtable
각 메서드에 대응하는 버젼의 메서드를 포함합니다. 다만, 모든 조작이 thread 세이프인 경우에서도, 취득 조작에 락은 포함되지 않기 때문에
테이블 전체가 락 되어 모든 액세스가 거부될 것은 없습니다. 이 클래스는
thread의 안전성에
존합니다만, 동기의 상세하게
존하지 않는 프로그램내에서 Hashtable 와의 완전한 상호 운용이 가능합니다.
보통
, 취득 조작 (get를
포함한다)에서는 블록은 실행되지 않기 때문에
갱신 조작과 오버랩 하는 경우가 있습니다 (put 및 remove를
포함한다). 취득에서는
개시시 로 유지하고 있는 갱신 조작 가운데, 마지막에 「완료했다」갱신 조작의 결과가 반영됩니다. putAll 나 clear 등의 집계 조작에서는
동시 취득은 일부의 엔트리의 삽입이나 삭제만을 반영합니다. 같이 Iterators 및 Enumerations는
어떤 시점 또는 반복자/열거의 작성 이래의 해시 테이블 상태를 반영하는 요소를 돌려줍니다. 이것들이 ConcurrentModificationException
를
Throw 할 것은 없습니다만, 한 번에 1 개의 thread만이 반복자를 사용하도록 설계되고 있습니다.
갱신 조작으로 허가되는 동시 처리는 옵션의 concurrencyLevel 생성자 인수 (디폴트는 16)에 해 이끌립니다. 이 값은, 내부의 사이즈 설정의 힌트로서 사용됩니다. 테이블은 내부적으로 분할되어 지시받은 수의 병렬 갱신을 경합 하지 않고 허가하는 것을 시도합니다. 해시 테이블내의 배치는 기본적으로 랜덤이기 때문에 실제의 concurrent processing는 다릅니다. 이상적이게는 테이블을 동시에 변경하는 thread수에 대응한 값을 선택할 필요가 있습니다. 필요한 값보다 현저하고 큰 값을 사용하면 공간과 시간이 낭비되어 필요한 값보다 현저하고 작은 값을 사용하면 thread가 경합 할 가능성이 있습니다. 다만, 일반적으로 절대치의 순서 내부를 과대 평가 및 과소평가해도, 그만큼 큰 영향은 없습니다. 변경을 실행하는 것은 1 개의 thread만으로 나머지의 thread는 모두 독해만을 실행하는 경우, 적절한 값은 1 입니다. 또, 이 해시 테이블 또는 그 외의 종류의 해시 테이블의 사이즈 변경은 상대적으로 저속인 조작인 것으로부터, 가능한 경우는 예상되는 테이블 사이즈의 추정치를 생성자 으로 지정해 두는 것을 추천합니다.
이 클래스와 그 뷰 및 반복자는
Map
및 Iterator
인터페이스의 옵션의 메서드를 모두 구현합니다.
이 클래스는
키 또는 값으로 해서 null를
사용하는 것을 허가하지 않습니다. 이것은,Hashtable
와 같은 동작이며,HashMap
와는 다른 동작입니다.
이 클래스는 Java Collections Framework 멤버입니다.
- 도입된 버젼:
- 1.5
- 관련 항목:
- 직렬화 된 형식
'Computer > JAVA' 카테고리의 다른 글
[JAVA] Float형의 소숫점 아래 고정자리 표기방법 (1) | 2014.04.24 |
---|---|
[JAVA] replace 사용 (0) | 2010.01.08 |
Java Mail (0) | 2009.05.14 |
jdk 1.4와 jdk 1.5 의 차이점 (0) | 2009.05.14 |
자바 exe파일 만들기 (0) | 2009.05.14 |
- Total
- Today
- Yesterday
- 새희망씨앗
- 기부사기
- 패밀리세일
- 와코마리아
- 나이지리아
- 리터너블
- javascript
- 페밀리세일
- VirtureBox
- 부드러운맛
- 팸세일
- 홈택스
- 와코마리아팸세일
- eclipse
- 해외직구
- java
- 마라탕 #마라상궈 #마라탕재료 #쉽게만드는마라탕 #중딩입맛 #마라탕잡탕
- 사업자등록
- 한남동세일
- 와코마리아한남동
- 인도
- 와코마리아 스웨터
- 라고스
- 단체소송
- 안드로이드
- 새희망씨앗 피해자
- 기부피해
- MySQL
- UML
- 6월 패밀리세일
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |