|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
| 개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 | |||||||||
java.lang.Objectjava.util.concurrent.atomic.AtomicReferenceFieldUpdater<T, V>
T - 갱신 가능한 필드를 보관 유지하는 객체의 형태V - 필드의 형태public abstract class AtomicReferenceFieldUpdater<T, V>
지정된 클래스의 지정된 volatile 참조 필드의 원자 갱신이 가능한, 리플렉션 베이스의 유틸리티입니다. 이 클래스는, 동일 노드의 복수의 참조 필드가 독립해 원자 갱신의 대상이 되는 원자 데이터 구조에서의 사용을 염두에 두어 설계되고 있습니다. 예를 들어, 트리 노드는 다음과 같이 선언됩니다.
class Node {
private volatile Node left, right;
private static final AtomicReferenceFieldUpdater<Node, Node> leftUpdater =
AtomicReferenceFieldUpdater.newUpdater(Node.class, Node.class, "left");
private static AtomicReferenceFieldUpdater<Node, Node> rightUpdater =
AtomicReferenceFieldUpdater.newUpdater(Node.class, Node.class, "right");
Node getLeft() { return left; }
boolean compareAndSetLeft(Node expect, Node update) {
return leftUpdater.compareAndSet(this, expect, update);
}
// ... and so on
}
이 클래스내의 compareAndSet 메소드의 보증은, 다른 원자 클래스내의 그것보다 약한 것에 유의해 주세요. 이 클래스는, 필드의 사용 모든 것이 원자 액세스에 적절하고 있는 것을 보증할 수 없기 때문에, 같은 업 데이터에서의 compareAndSet 및 set 외의 호출에 관한 보고 원자성을 보증할 수 있습니다.
| 생성자 의 개요 | |
|---|---|
protected |
AtomicReferenceFieldUpdater ()
서브 클래스에 의해 사용된다, 아무것도 실시하지 않는 protected 생성자. |
| 메소드의 개요 | ||
|---|---|---|
abstract boolean |
compareAndSet (T obj,
V expect,
V update)
「현재의 값 == 예상되는 값」인 경우, 이 업 데이터가 관리하는 지정된 객체의 필드치를, 지정된 갱신 끝난 값에 원자적으로 설정합니다. |
|
abstract V |
get (T obj)
이 업 데이터가 관리하는 지정된 객체의 필드가 보관 유지하는 현재가를 가져옵니다. |
|
V |
getAndSet (T obj,
V newValue)
이 업 데이터에 의해 관리되는 지정된 객체의 필드가 지정된 값에 프리미티브(primitive)으로 설정해, 이전의 값을 돌려줍니다. |
|
abstract void |
lazySet (T obj,
V newValue)
이 업 데이터에 의해 관리되는 지정된 객체의 필드를, 지정된 갱신 끝난 값에 최종적으로 설정합니다. |
|
static
|
newUpdater (Class <U> tclass,
Class <W> vclass,
String fieldName)
지정된 필드를 가지는 객체의 업 데이터를 작성해 돌려줍니다. |
|
abstract void |
set (T obj,
V newValue)
이 업 데이터에 의해 관리되는 지정된 객체의 필드를, 지정된 갱신 끝난 값으로 설정합니다. |
|
abstract boolean |
weakCompareAndSet (T obj,
V expect,
V update)
「현재의 값 == 예상되는 값」인 경우, 이 업 데이터가 관리하는 지정된 객체의 필드치를, 지정된 갱신 끝난 값에 원자적으로 설정합니다. |
|
| 클래스 java.lang. Object 로부터 상속된 메소드 |
|---|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
| 생성자 의 상세 |
|---|
protected AtomicReferenceFieldUpdater()
| 메소드의 상세 |
|---|
public static <U, W> AtomicReferenceFieldUpdater <U, W> newUpdater(Class <U> tclass,
Class <W> vclass,
String fieldName)
tclass - 필드를 보관 유지하는 객체의 클래스vclass - 필드의 클래스fieldName - 갱신하는 필드의 이름
IllegalArgumentException - 필드가 휘발성의 참조형이 아닌 경우
RuntimeException - 클래스에 필드가 포함되지 않는가, 형태가 부정한 경우에, 상자로 된 리플렉션 베이스의 예외가 throw 된다
public abstract boolean compareAndSet(T obj,
V expect,
V update)
== 예상되는 값」인 경우, 이 업 데이터가 관리하는 지정된 객체의 필드치를, 지정된 갱신 끝난 값에 원자적으로 설정합니다. 이 메소드는,compareAndSet 및 set 에 대하는 것 외의 호출로 원자성을 가지는 것이 보증되고 있습니다만, 필드내외의 변경에 관해서는 반드시 그렇다라고는 한정하지 않습니다.
obj - 조건부로 필드를 설정하는 객체expect - 예상되는 값update - 새로운 값
public abstract boolean weakCompareAndSet(T obj,
V expect,
V update)
== 예상되는 값」인 경우, 이 업 데이터가 관리하는 지정된 객체의 필드치를, 지정된 갱신 끝난 값에 원자적으로 설정합니다. 이 메소드는,compareAndSet 및 set 에 대하는 것 외의 호출로 원자성을 가지는 것이 보증되고 있습니다만, 필드내외의 변경에 관해서는 반드시 그렇다라고는 한정하지 않습니다.
외관상 실패할 가능성이 있어, 순서부 보증을 제공하지 않기 때문에,compareAndSet 대신에 사용하는 것은 거의 없습니다.
obj - 조건부로 필드를 설정하는 객체expect - 예상되는 값update - 새로운 값
public abstract void set(T obj,
V newValue)
compareAndSet 의 호출에 관해서는, 휘발성 스토어로서 동작하는 것이 보증되고 있습니다.
obj - 필드를 설정하는 객체newValue - 새로운 값
public abstract void lazySet(T obj,
V newValue)
obj - 필드를 설정하는 객체newValue - 새로운 값public abstract V get(T obj)
obj - 필드를 취득하는 객체
public V getAndSet(T obj,
V newValue)
obj - 필드를 취득 및 설정하는 객체newValue - 새로운 값
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
| 개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 | |||||||||
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.