|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요 : 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.util.AbstractMap <K, V>
java.util.concurrent.ConcurrentHashMap<K, V>
K
- 이 맵이 보관 유지하는 키의 형태V
- 맵 되는 값의 형태public class ConcurrentHashMap<K, V>
취득의 완전한 동시성 및 예상되는 조정 가능한 갱신 병행성을 지원하는 해시 테이블입니다. 이 클래스는,Hashtable
와 같은 기능 스펙에 따라,Hashtable 의 각 메소드에 대응하는 버젼의 메소드를 포함합니다. 다만, 모든 조작이 thread 세이프인 경우에서도, 취득 조작에 락은 포함되지 않기 때문에, 테이블 전체가 락 되어 모든 액세스가 거부될 것은 없습니다. 이 클래스는, thread의 안전성에는 의존하지만, 동기의 상세하게 의존하지 않는 프로그램내에서 Hashtable 와의 완전한 상호 운용이 가능합니다.
일반적으로, 취득 조작 (get 를 포함한다)에서는 블록은 실행되지 않기 때문에, 갱신 조작과 오버랩 하는 경우가 있습니다 (put 및 remove 를 포함한다). 취득에서는, 개시시 로 유지하고 있는 갱신 조작 가운데, 마지막에 「완료했다」갱신 조작의 결과가 반영됩니다. putAll 나 clear 등의 집계 조작에서는, 병행 취득은 일부의 엔트리의 삽입이나 삭제만을 반영합니다. 같이 Iterator 및 Enumeration 는, 어떤 시점 또는 반복자/열거의 작성 이후의 해시 테이블 상태를 반영하는 요소를 돌려줍니다. 이것들이 ConcurrentModificationException
를 throw 할 것은 없습니다만, 한 번에 1 개의 thread만이 반복자를 사용하도록(듯이) 설계되고 있습니다.
갱신 조작으로 허가되는 동시성 처리는, 옵션의 concurrencyLevel 생성자 인수 (디폴트는 16)에 의해 이끌립니다. 이 값은 내부의 사이즈 설정의 힌트로서 사용됩니다. 테이블은 내부적으로 분할되어 지시받은 수의 병행 갱신을 경합 하지 않게 허가하는 것을 시도합니다. 해시 테이블내의 배치는 기본적으로 랜덤이기 (위해)때문에, 실제의 동시성 처리는 다릅니다. 이상적이게는, 테이블을 병행해 변경하는 thread수에 대응한 값을 선택할 필요가 있습니다. 필요한 값보다 현저하고 큰 값을 사용하면(자) 영역과 시간이 낭비되어 필요한 값보다 현저하고 작은 값을 사용하면(자) thread가 경합 할 가능성이 있습니다. 다만, 일반적으로은, 절대치의 순서 내부를 과대 평가 및 과소평가해도, 그만큼 큰 영향은 없습니다. 변경을 실행하는 것은 1 개의 thread만으로, 나머지의 thread는 모두 읽기만을 실행하는 경우, 적절한 값은 1 입니다. 또, 이 해시 테이블 또는 그 외의 종류의 해시 테이블의 사이즈 변경은 상대적으로 저속인 조작인 것으로부터, 가능한 경우는, 예상되는 테이블 사이즈의 추정치를 생성자 으로 지정해 두는 것을 추천합니다.
이 클래스와 그 뷰 및 반복자는,Map
및 Iterator
인터페이스의 「옵션」메소드 모든 것을 구현합니다.
Hashtable
와 같게 (HashMap
와는 다르다), 이 클래스는, 키 또는 값으로 해서 null 를 사용하는 것을 허가하지 않습니다.
이 클래스는,Java Collections Framework 의 멤버입니다.
상자의 클래스의 개요 |
---|
클래스 java.util. AbstractMap 로부터 상속된 상자의 클래스/인터페이스 |
---|
AbstractMap.SimpleEntry <K ,V >, AbstractMap.SimpleImmutableEntry <K ,V > |
인터페이스 java.util. Map 로부터 상속된 상자의 클래스/인터페이스 |
---|
Map.Entry <K ,V > |
생성자 의 개요 | |
---|---|
ConcurrentHashMap ()
디폴트의 초기 용량 (16), 부하 계수 (0.75), 및 concurrencyLevel (16)로, 새로운 빈 상태(empty)의 맵을 작성합니다. |
|
ConcurrentHashMap (int initialCapacity)
지정된 초기 용량, 및 디폴트의 부하 계수 (0.75)와 concurrencyLevel (16)로, 새로운 빈 상태(empty)의 맵을 작성합니다. |
|
ConcurrentHashMap (int initialCapacity,
float loadFactor)
지정된 초기 용량과 부하 계수, 및 디폴트의 concurrencyLevel (16)로, 새로운 빈 상태(empty)의 맵을 작성합니다. |
|
ConcurrentHashMap (int initialCapacity,
float loadFactor,
int concurrencyLevel)
지정된 초기 용량, 부하 계수, 및 동시성 처리 레벨로, 새로운 빈 상태(empty)의 맵을 작성합니다. |
|
ConcurrentHashMap (Map <? extends K ,? extends V > m)
지정된 맵과 같은 매핑으로 새로운 맵을 작성합니다. |
메소드의 개요 | |
---|---|
void |
clear ()
모든 매핑을 맵으로부터 삭제합니다. |
boolean |
contains (Object value)
일부의 키가 이 테이블내의 지정된 값에 매핑 될지 어떨지를 테스트하는 종래의 메소드. |
boolean |
containsKey (Object key)
지정된 객체가, 이 테이블의 키인가 어떤가를 판정합니다. |
boolean |
containsValue (Object value)
맵이 1 개 또는 복수의 키와 지정된 값을 매핑 하고 있는 경우에 true 를 돌려줍니다. |
Enumeration <V > |
elements ()
테이블에 있는 값의 리스트를 돌려줍니다. |
Set <Map.Entry <K ,V >> |
entrySet ()
이 맵에 포함되는 맵 Set 뷰를 돌려줍니다. |
V |
get (Object key)
지정된 키가 맵 되고 있는 값을 돌려줍니다. |
boolean |
isEmpty ()
맵이 키와 값의 매핑을 보관 유지하지 않는 경우에 true 를 돌려줍니다. |
Enumeration <K > |
keys ()
테이블에 있는 키의 열거를 돌려줍니다. |
Set <K > |
keySet ()
이 맵에 포함되는 키 Set 뷰를 돌려줍니다. |
V |
put (K key,
V value)
이 테이블로, 지정된 키가 지정된 값에 맵 합니다. |
void |
putAll (Map <? extends K ,? extends V > m)
지정한 맵으로부터 이 맵에 모든 매핑을 카피합니다. |
V |
putIfAbsent (K key,
V value)
지정된 키가 아직 값과 관련지을 수 있지 않은 경우는, 지정된 값에 관련짓습니다. |
V |
remove (Object key)
키 ( 및 거기에 대응하는 값)를 이 맵으로부터 삭제합니다. |
boolean |
remove (Object key,
Object value)
지정된 값에 키가 현재 매핑 되고 있는 경우에게만, 그 키의 엔트리를 삭제합니다. |
V |
replace (K key,
V value)
키가 값에 현재 매핑 되고 있는 경우에게만, 그 키의 엔트리를 치환합니다. |
boolean |
replace (K key,
V oldValue,
V newValue)
지정된 값에 키가 현재 매핑 되고 있는 경우에게만, 그 키의 엔트리를 치환합니다. |
int |
size ()
맵내의 키치 매핑의 수를 돌려줍니다. |
Collection <V > |
values ()
이 맵에 포함되는 값 Collection 뷰를 돌려줍니다. |
클래스 java.util. AbstractMap 로부터 상속된 메소드 |
---|
clone , equals , hashCode , toString |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
finalize , getClass , notify , notifyAll , wait , wait , wait |
인터페이스 java.util. Map 로부터 상속된 메소드 |
---|
equals , hashCode |
생성자 의 상세 |
---|
public ConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel)
initialCapacity
- 초기 용량. 다수의 요소에 적합하도록, 구현은 내부의 사이즈 설정을 실행하는loadFactor
- 사이즈 변경의 제어에 사용되는 부하 계수의 임계치. 사이즈 변경은, 빈 마다의 요소의 평균수가 이 임계치를 넘었을 경우에 실행할 수 있는concurrencyLevel
- 병행해 갱신중의 thread의 추정수.
다수의 thread에 적합하도록, 구현은 내부의 사이즈 설정을 실행한다
IllegalArgumentException
- 초기 용량이 부인지, 부하 계수 또는 concurrencyLevel 가 정이 아닌 경우public ConcurrentHashMap(int initialCapacity, float loadFactor)
initialCapacity
- 다수의 요소에 적합하도록, 구현은 내부의 사이즈 설정을 실행하는loadFactor
- 사이즈 변경의 제어에 사용되는 부하 계수의 임계치.
사이즈 변경은, 빈 마다의 요소의 평균수가 이 임계치를 넘었을 경우에 실행할 수 있다
IllegalArgumentException
- 요소의 초기 용량이 부일까 부하 계수가 정이 아닌 경우public ConcurrentHashMap(int initialCapacity)
initialCapacity
- 초기 용량 다수의 요소에 적합하도록, 구현은 내부의 사이즈 설정을 실행한다
IllegalArgumentException
- 요소의 초기 용량이 부의 경우public ConcurrentHashMap()
public ConcurrentHashMap(Map <? extends K ,? extends V > m)
m
- 맵메소드의 상세 |
---|
public boolean isEmpty()
Map <K ,V >
내의 isEmpty
AbstractMap <K ,V >
내의 isEmpty
public int size()
Map <K ,V >
내의 size
AbstractMap <K ,V >
내의 size
public V get(Object key)
null
를 돌려줍니다.
즉, 이 메소드는,key.equals(k)
가 되는 키 k
로부터 값 v
에의 매핑이 이 맵에 포함되어 있는 경우는 v
를 돌려주어, 그 이외의 경우는 null
를 돌려줍니다. 이러한 매핑이 1 개만 있습니다.
Map <K ,V >
내의 get
AbstractMap <K ,V >
내의 get
key
- 관련지을 수 있었던 값이 반환되는 키
null
NullPointerException
- 지정된 키가 null 인 경우public boolean containsKey(Object key)
Map <K ,V >
내의 containsKey
AbstractMap <K ,V >
내의 containsKey
key
- 가능한 키
NullPointerException
- 지정된 키가 null 인 경우public boolean containsValue(Object value)
Map <K ,V >
내의 containsValue
AbstractMap <K ,V >
내의 containsValue
value
- 맵에 있을지 어떨지를 판정되는 값
NullPointerException
- 지정된 값이 null 인 경우public boolean contains(Object value)
containsValue(java.lang.Object)
와 같은 기능을 가집니다. 이것은, Java Collections Framework 의 도입전에 이 메소드를 지원하고 있던,Hashtable
클래스와의 완전한 호환성을 유지하기 위해(때문에)인 만큼 존재합니다.
value
- 검색하는 값
NullPointerException
- 지정된 값이 null 인 경우public V put(K key, V value)
이 값은, 원의 키와 동일한 키를 지정해 get 메소드를 호출하는 것에 의해 꺼낼 수가 있습니다.
Map <K ,V >
내의 put
AbstractMap <K ,V >
내의 put
key
- 지정된 값을 관련지을 수 있는 키value
- 지정된 키에 관련지을 수 있는 값
NullPointerException
- 지정된 키 또는 값이 null 의 경우public V putIfAbsent(K key, V value)
if (! map.containsKey(key)) return map.put(key, value); else return map.get(key);다만, 액션이 원자적으로 실행되는 점이 다릅니다.
ConcurrentMap <K ,V >
내의 putIfAbsent
key
- 지정된 값을 관련지을 수 있는 키value
- 지정된 키에 관련지을 수 있는 값
NullPointerException
- 지정된 키 또는 값이 null 의 경우public void putAll(Map <? extends K ,? extends V > m)
Map <K ,V >
내의 putAll
AbstractMap <K ,V >
내의 putAll
m
- 맵에 포함되는 매핑public V remove(Object key)
Map <K ,V >
내의 remove
AbstractMap <K ,V >
내의 remove
key
- 삭제할 필요가 있는 키
NullPointerException
- 지정된 키가 null 인 경우public boolean remove(Object key, Object value)
if (map.containsKey(key) && map.get(key). equals(value)) { map.remove(key); return true; } else return false;다만, 액션이 원자적으로 실행되는 점이 다릅니다.
ConcurrentMap <K ,V >
내의 remove
key
- 지정된 값을 관련지을 수 있는 키value
- 지정된 키에 관련지을 수 있고 있다고 예상되는 값
NullPointerException
- 지정된 키가 null 인 경우public boolean replace(K key, V oldValue, V newValue)
if (map.containsKey(key) && map.get(key). equals(oldValue)) { map.put(key, newValue); return true; } else return false;다만, 액션이 원자적으로 실행되는 점이 다릅니다.
ConcurrentMap <K ,V >
내의 replace
key
- 지정된 값을 관련지을 수 있는 키oldValue
- 지정된 키에 관련지을 수 있고 있다고 예상되는 값newValue
- 지정된 키에 관련지을 수 있는 값
NullPointerException
- 인수가 1 개에서도 null 의 경우public V replace(K key, V value)
if (map.containsKey(key)) { return map.put(key, value); } else return null;다만, 액션이 원자적으로 실행되는 점이 다릅니다.
ConcurrentMap <K ,V >
내의 replace
key
- 지정된 값을 관련지을 수 있는 키value
- 지정된 키에 관련지을 수 있는 값
NullPointerException
- 지정된 키 또는 값이 null 의 경우public void clear()
Map <K ,V >
내의 clear
AbstractMap <K ,V >
내의 clear
public Set <K > keySet()
Set
뷰를 돌려줍니다. 세트는 맵과 연동하고 있으므로, 맵에 대한 변경은 세트에 반영되어 또, 세트에 대한 변경은 맵에 반영됩니다. 세트는,Iterator.remove,Set.remove,removeAll,retainAll, 및 clear 의 각 오퍼레이션보다, 맵으로부터 대응하는 매핑을 삭제하는 요소 삭제 처리를 지원합니다. Set 는,add 오퍼레이션이나 addAll 오퍼레이션은 지원하고 있습니다.
뷰의 Iterator 는 「약일관성」을 가지는 반복자이며,ConcurrentModificationException
를 throw 할 것은 없고, 반복자의 구축시에 존재한 요소를 횡단(traverse) 하는 것을 보증합니다. 또, 구축 후의 모든 변경을 반영합니다 (다만 보증되지는 않았다).
Map <K ,V >
내의 keySet
AbstractMap <K ,V >
내의 keySet
public Collection <V > values()
Collection
뷰를 돌려줍니다. 컬렉션은 맵과 연동하고 있으므로, 맵에 대한 변경은 컬렉션에 반영되어 또 컬렉션에 대한 변경은 맵에 반영됩니다. 컬렉션은,Iterator.remove,Collection.remove,removeAll,retainAll, 및 clear 오퍼레이션에 의해, 맵으로부터 대응하는 매핑을 삭제하는 요소 삭제 처리를 지원합니다. Set 는,add 오퍼레이션이나 addAll 오퍼레이션은 지원하고 있습니다.
뷰의 Iterator 는 「약일관성」을 가지는 반복자이며,ConcurrentModificationException
를 throw 할 것은 없고, 반복자의 구축시에 존재한 요소를 횡단(traverse) 하는 것을 보증합니다. 또, 구축 후의 모든 변경을 반영합니다 (다만 보증되지는 않았다).
Map <K ,V >
내의 values
AbstractMap <K ,V >
내의 values
public Set <Map.Entry <K ,V >> entrySet()
Set
뷰를 돌려줍니다. 세트는 맵과 연동하고 있으므로, 맵에 대한 변경은 세트에 반영되어 또, 세트에 대한 변경은 맵에 반영됩니다. 삭제는,Iterator.remove,Set.remove,removeAll,retainAll, 및 clear 의 각 오퍼레이션을 통해 실시합니다. Set 는,add 오퍼레이션이나 addAll 오퍼레이션은 지원하고 있습니다.
뷰의 Iterator 는 「약일관성」을 가지는 반복자이며,ConcurrentModificationException
를 throw 할 것은 없고, 반복자의 구축시에 존재한 요소를 횡단(traverse) 하는 것을 보증합니다. 또, 구축 후의 모든 변경을 반영합니다 (다만 보증되지는 않았다).
Map <K ,V >
내의 entrySet
AbstractMap <K ,V >
내의 entrySet
public Enumeration <K > keys()
keySet()
public Enumeration <V > elements()
values()
|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요 : 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.