JavaTM Platform
Standard Ed. 6

java.util.concurrent.atomic
클래스 AtomicReferenceFieldUpdater<T, V>

java.lang.Object 
  상위를 확장 java.util.concurrent.atomic.AtomicReferenceFieldUpdater<T, V>
형태 파라미터:
T - 갱신 가능한 필드를 보관 유지하는 객체의 형태
V - 필드의 형태


public abstract class AtomicReferenceFieldUpdater<T, V>
extends Object

지정된 클래스의 지정된 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 메소드의 보증은, 다른 원자 클래스내의 그것보다 약한 것에 유의해 주세요. 이 클래스는, 필드의 사용 모든 것이 원자 액세스에 적절하고 있는 것을 보증할 수 없기 때문에, 같은 업 데이터에서의 compareAndSetset 외의 호출에 관한 보고 원자성을 보증할 수 있습니다.

도입된 버젼:
1.5

생성자 의 개요
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
<U, W> AtomicReferenceFieldUpdater <U, W>
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
 

생성자 의 상세

AtomicReferenceFieldUpdater

protected AtomicReferenceFieldUpdater()
서브 클래스에 의해 사용된다, 아무것도 실시하지 않는 protected 생성자.

메소드의 상세

newUpdater

public static <U, W> AtomicReferenceFieldUpdater <U, W> newUpdater(Class <U> tclass,
                                                                Class <W> vclass,
                                                                String  fieldName)
지정된 필드를 가지는 객체의 업 데이터를 작성해 돌려줍니다. Class 인수는, 리플렉트형과 총칭형의 일치를 체크하기 위해서 필요합니다.

파라미터:
tclass - 필드를 보관 유지하는 객체의 클래스
vclass - 필드의 클래스
fieldName - 갱신하는 필드의 이름
반환값:
업 데이터
예외:
IllegalArgumentException - 필드가 휘발성의 참조형이 아닌 경우
RuntimeException - 클래스에 필드가 포함되지 않는가, 형태가 부정한 경우에, 상자로 된 리플렉션 베이스의 예외가 throw 된다

compareAndSet

public abstract boolean compareAndSet(T  obj,
                                      V  expect,
                                      V  update)
「현재의 값 == 예상되는 값」인 경우, 이 업 데이터가 관리하는 지정된 객체의 필드치를, 지정된 갱신 끝난 값에 원자적으로 설정합니다. 이 메소드는,compareAndSetset 에 대하는 것 외의 호출로 원자성을 가지는 것이 보증되고 있습니다만, 필드내외의 변경에 관해서는 반드시 그렇다라고는 한정하지 않습니다.

파라미터:
obj - 조건부로 필드를 설정하는 객체
expect - 예상되는 값
update - 새로운 값
반환값:
성공하는 경우는 true

weakCompareAndSet

public abstract boolean weakCompareAndSet(T  obj,
                                          V  expect,
                                          V  update)
「현재의 값 == 예상되는 값」인 경우, 이 업 데이터가 관리하는 지정된 객체의 필드치를, 지정된 갱신 끝난 값에 원자적으로 설정합니다. 이 메소드는,compareAndSetset 에 대하는 것 외의 호출로 원자성을 가지는 것이 보증되고 있습니다만, 필드내외의 변경에 관해서는 반드시 그렇다라고는 한정하지 않습니다.

외관상 실패할 가능성이 있어, 순서부 보증을 제공하지 않기 때문에,compareAndSet 대신에 사용하는 것은 거의 없습니다.

파라미터:
obj - 조건부로 필드를 설정하는 객체
expect - 예상되는 값
update - 새로운 값
반환값:
성공하는 경우는 true

set

public abstract void set(T  obj,
                         V  newValue)
이 업 데이터에 의해 관리되는 지정된 객체의 필드를, 지정된 갱신 끝난 값으로 설정합니다. 이 조작은, 후속의 compareAndSet 의 호출에 관해서는, 휘발성 스토어로서 동작하는 것이 보증되고 있습니다.

파라미터:
obj - 필드를 설정하는 객체
newValue - 새로운 값

lazySet

public abstract void lazySet(T  obj,
                             V  newValue)
이 업 데이터에 의해 관리되는 지정된 객체의 필드를, 지정된 갱신 끝난 값에 최종적으로 설정합니다.

파라미터:
obj - 필드를 설정하는 객체
newValue - 새로운 값
도입된 버젼:
1.6

get

public abstract V  get(T  obj)
이 업 데이터가 관리하는 지정된 객체의 필드가 보관 유지하는 현재가를 가져옵니다.

파라미터:
obj - 필드를 취득하는 객체
반환값:
현재의 값

getAndSet

public V  getAndSet(T  obj,
                   V  newValue)
이 업 데이터에 의해 관리되는 지정된 객체의 필드가 지정된 값에 프리미티브(primitive)으로 설정해, 이전의 값을 돌려줍니다.

파라미터:
obj - 필드를 취득 및 설정하는 객체
newValue - 새로운 값
반환값:
전의값

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.