|
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 도 참조해 주세요.