モジュール java.base

クラスAtomicReferenceArray<E>

  • 型パラメータ:
    E - この配列に保持されている要素の基底クラス
    すべての実装されたインタフェース:
    Serializable

    public class AtomicReferenceArray<E>
    extends Object
    implements Serializable
    要素を原子的に更新可能なオブジェクト参照の配列です。 アトミック・アクセスのプロパティの詳細は、VarHandleの仕様を参照してください。
    導入されたバージョン:
    1.5
    関連項目:
    直列化された形式
    • コンストラクタの詳細

      • AtomicReferenceArray

        public AtomicReferenceArray​(int length)
        指定された長さの新しいAtomicReferenceArrayを作成し、すべての要素はゼロに初期化されます。
        パラメータ:
        length - 配列の長さ
      • AtomicReferenceArray

        public AtomicReferenceArray​(E[] array)
        指定された配列と同じ長さのAtomicReferenceArrayを新しく作成します。すべての要素は、指定された配列からコピーされます。
        パラメータ:
        array - 要素のコピー元の配列
        例外:
        NullPointerException - 配列がnullの場合
    • メソッドの詳細

      • length

        public final int length()
        配列の長さを返します。
        戻り値:
        配列の長さ
      • get

        public final E get​(int i)
        VarHandle.getVolatile(java.lang.Object...)で指定されたメモリー効果を使用して、索引iの要素の現在の値を返します。
        パラメータ:
        i - インデックス
        戻り値:
        現行値
      • set

        public final void set​(int i,
                              E newValue)
        VarHandle.setVolatile(java.lang.Object...)で指定されたメモリー効果を使用して、索引iの要素をnewValueに設定します。
        パラメータ:
        i - インデックス
        newValue - 新しい値
      • lazySet

        public final void lazySet​(int i,
                                  E newValue)
        VarHandle.setRelease(java.lang.Object...)で指定されたメモリー効果を使用して、索引iの要素をnewValueに設定します。
        パラメータ:
        i - インデックス
        newValue - 新しい値
        導入されたバージョン:
        1.6
      • getAndSet

        public final E getAndSet​(int i,
                                 E newValue)
        索引iの要素を原子的に newValueに設定し、VarHandle.getAndSet(java.lang.Object...)で指定されたメモリー効果を使用して古い値を返します。
        パラメータ:
        i - インデックス
        newValue - 新しい値
        戻り値:
        前の値
      • compareAndSet

        public final boolean compareAndSet​(int i,
                                           E expectedValue,
                                           E newValue)
        VarHandle.compareAndSet(java.lang.Object...)で指定されたメモリー効果を使用して、要素の現在の値== expectedValueの場合、索引iの要素をnewValueに原子的に設定します。
        パラメータ:
        i - インデックス
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功する場合はtrue falseは、実際の値が予想される値と等価ではないことを示す。
      • weakCompareAndSet

        @Deprecated(since="9")
        public final boolean weakCompareAndSet​(int i,
                                               E expectedValue,
                                               E newValue)
        非推奨。
        このメソッドにはプレーン・メモリー効果がありますが、メソッド名は揮発性メモリー効果を意味します(compareAndExchange(int, E, E)compareAndSet(int, E, E)などのメソッドを参照)。 プレーン・メモリーまたは揮発性メモリーの影響による混乱を避けるため、かわりにメソッドweakCompareAndSetPlain(int, E, E)を使用することをお薦めします。
        要素の現在の値== expectedValueVarHandle.weakCompareAndSetPlain(java.lang.Object...)で指定されたメモリー効果を持つ場合、索引iの要素を原子的にnewValueに設定します。
        パラメータ:
        i - インデックス
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合はtrue
        関連項目:
        weakCompareAndSetPlain(int, E, E)
      • weakCompareAndSetPlain

        public final boolean weakCompareAndSetPlain​(int i,
                                                    E expectedValue,
                                                    E newValue)
        要素の現在の値== expectedValueVarHandle.weakCompareAndSetPlain(java.lang.Object...)で指定されたメモリー効果を持つ場合、索引iの要素を原子的にnewValueに設定します。
        パラメータ:
        i - インデックス
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合はtrue
        導入されたバージョン:
        9
      • getAndUpdate

        public final E getAndUpdate​(int i,
                                    UnaryOperator<E> updateFunction)
        VarHandle.compareAndSet(java.lang.Object...)で指定されたメモリー効果を使用して、索引iの要素を、指定されたファンクションを適用した結果で原子的に更新し、前の値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。
        パラメータ:
        i - インデックス
        updateFunction - 副作用のない関数
        戻り値:
        前の値
        導入されたバージョン:
        1.8
      • updateAndGet

        public final E updateAndGet​(int i,
                                    UnaryOperator<E> updateFunction)
        (VarHandle.compareAndSet(java.lang.Object...)で指定されたメモリー効果を使用して)索引iの要素を、指定されたファンクションを適用した結果で原子的に更新し、更新された値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。
        パラメータ:
        i - インデックス
        updateFunction - 副作用のない関数
        戻り値:
        更新された値
        導入されたバージョン:
        1.8
      • getAndAccumulate

        public final E getAndAccumulate​(int i,
                                        E x,
                                        BinaryOperator<E> accumulatorFunction)
        索引iの要素を(VarHandle.compareAndSet(java.lang.Object...)で指定されたメモリー効果で)アトミックに更新し、指定された関数を現在の値および指定された値に適用して前の値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。 この関数は、索引iの要素の現在の値を最初の引数として適用し、指定された更新を2番目の引数として適用します。
        パラメータ:
        i - インデックス
        x - 更新値
        accumulatorFunction - 2つの引数を取る、副作用のない関数
        戻り値:
        前の値
        導入されたバージョン:
        1.8
      • accumulateAndGet

        public final E accumulateAndGet​(int i,
                                        E x,
                                        BinaryOperator<E> accumulatorFunction)
        索引iの要素を(VarHandle.compareAndSet(java.lang.Object...)で指定されたメモリー効果で)アトミックに更新し、指定された関数を現在の値および指定された値に適用して、更新された値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。 この関数は、索引iの要素の現在の値を最初の引数として適用し、指定された更新を2番目の引数として適用します。
        パラメータ:
        i - インデックス
        x - 更新値
        accumulatorFunction - 2つの引数を取る、副作用のない関数
        戻り値:
        更新された値
        導入されたバージョン:
        1.8
      • toString

        public String toString()
        配列の現在値の文字列表現を返します。
        オーバーライド:
        toString、クラスObject
        戻り値:
        配列の現在値の文字列表現
      • getPlain

        public final E getPlain​(int i)
        変数が非volatileとして宣言されたかのように、読取りのメモリー・セマンティクスを使用して、索引iの要素の現在の値を戻します。
        パラメータ:
        i - インデックス
        戻り値:
        導入されたバージョン:
        9
      • setPlain

        public final void setPlain​(int i,
                                   E newValue)
        索引iの要素をnewValueに設定し、変数が非volatileおよび非finalとして宣言されたかのように、メモリー・セマンティクスを設定します。
        パラメータ:
        i - インデックス
        newValue - 新しい値
        導入されたバージョン:
        9
      • getOpaque

        public final E getOpaque​(int i)
        VarHandle.getOpaque(java.lang.Object...)で指定されたメモリー効果を使用して、索引iの要素の現在の値を返します。
        パラメータ:
        i - インデックス
        戻り値:
        導入されたバージョン:
        9
      • setOpaque

        public final void setOpaque​(int i,
                                    E newValue)
        VarHandle.setOpaque(java.lang.Object...)で指定されたメモリー効果を使用して、索引iの要素をnewValueに設定します。
        パラメータ:
        i - インデックス
        newValue - 新しい値
        導入されたバージョン:
        9
      • getAcquire

        public final E getAcquire​(int i)
        VarHandle.getAcquire(java.lang.Object...)で指定されたメモリー効果を使用して、索引iの要素の現在の値を返します。
        パラメータ:
        i - インデックス
        戻り値:
        導入されたバージョン:
        9
      • setRelease

        public final void setRelease​(int i,
                                     E newValue)
        VarHandle.setRelease(java.lang.Object...)で指定されたメモリー効果を使用して、索引iの要素をnewValueに設定します。
        パラメータ:
        i - インデックス
        newValue - 新しい値
        導入されたバージョン:
        9
      • compareAndExchange

        public final E compareAndExchange​(int i,
                                          E expectedValue,
                                          E newValue)
        witness value (== expectedValue)と呼ばれる要素の現在の値が、VarHandle.compareAndExchange(java.lang.Object...)で指定されたメモリー効果を持つ場合に、索引iの要素をnewValueに原子的に設定します。
        パラメータ:
        i - インデックス
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合の期待値と同じ証人値
        導入されたバージョン:
        9
      • compareAndExchangeAcquire

        public final E compareAndExchangeAcquire​(int i,
                                                 E expectedValue,
                                                 E newValue)
        witness value (== expectedValue)と呼ばれる要素の現在の値が、VarHandle.compareAndExchangeAcquire(java.lang.Object...)で指定されたメモリー効果を持つ場合に、索引iの要素をnewValueに原子的に設定します。
        パラメータ:
        i - インデックス
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合の期待値と同じ証人値
        導入されたバージョン:
        9
      • compareAndExchangeRelease

        public final E compareAndExchangeRelease​(int i,
                                                 E expectedValue,
                                                 E newValue)
        witness value (== expectedValue)と呼ばれる要素の現在の値が、VarHandle.compareAndExchangeRelease(java.lang.Object...)で指定されたメモリー効果を持つ場合に、索引iの要素をnewValueに原子的に設定します。
        パラメータ:
        i - インデックス
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合の期待値と同じ証人値
        導入されたバージョン:
        9
      • weakCompareAndSetVolatile

        public final boolean weakCompareAndSetVolatile​(int i,
                                                       E expectedValue,
                                                       E newValue)
        要素の現在の値== expectedValueVarHandle.weakCompareAndSet(java.lang.Object...)で指定されたメモリー効果を持つ場合、索引iの要素を原子的にnewValueに設定します。
        パラメータ:
        i - インデックス
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合はtrue
        導入されたバージョン:
        9
      • weakCompareAndSetAcquire

        public final boolean weakCompareAndSetAcquire​(int i,
                                                      E expectedValue,
                                                      E newValue)
        要素の現在の値== expectedValueVarHandle.weakCompareAndSetAcquire(java.lang.Object...)で指定されたメモリー効果を持つ場合、索引iの要素を原子的にnewValueに設定します。
        パラメータ:
        i - インデックス
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合はtrue
        導入されたバージョン:
        9
      • weakCompareAndSetRelease

        public final boolean weakCompareAndSetRelease​(int i,
                                                      E expectedValue,
                                                      E newValue)
        要素の現在の値== expectedValueVarHandle.weakCompareAndSetRelease(java.lang.Object...)で指定されたメモリー効果を持つ場合、索引iの要素を原子的にnewValueに設定します。
        パラメータ:
        i - インデックス
        expectedValue - 必要な値
        newValue - 新しい値
        戻り値:
        成功した場合はtrue
        導入されたバージョン:
        9