概要 | パッケージ | クラス | 使用 | 階層ツリー | 非推奨 API | 索引 | ヘルプ
| Woolpack API
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド

## woolpack.acquirable
クラス AcquirableUtils

    java.lang.Object
      woolpack.acquirable.AcquirableUtils

    public final class AcquirableUtils

extends java.lang.Object

実行権制御のユーティリティです。

作成者:
  nakamura

フィールドの概要
`static Acquirable<java.lang.RuntimeException>` | `ANY` 無制限に実行権を与える実行権マネージャです。
`static Acquirable<java.lang.RuntimeException>` | `INTERRUPT` 常に実行権を与えず、実行したスレッドに対し`Thread.interrupt()`を実行する実行権マネージャです。
`static Acquirable<java.lang.InterruptedException>` | `INTERRUPTED_EXCEPTION` 常に実行権を与えず、 実行したスレッドに対し`Thread.interrupt()`を実行し、 `InterruptedException`を原因として持つ `IllegalStateException`を投げる実行権マネージャです。
`static Acquirable<java.lang.RuntimeException>` | `NONE` 常に実行権を与えない実行権マネージャです。

メソッドの概要
`static
`<C,R,E extends java.lang.Exception> Fn<C,R,E>`
` | `acquire(Fn<? super C,? extends Acquirable<? extends E>,? extends E> acquireGetter, Fn<? super C,? extends R,? extends E> trueFn, Fn<? super C,? extends R,? extends E> falseFn)` 取得した`Acquirable`で実行権を制御する関数を生成します。
`static
`<E extends java.lang.Exception> Acquirable<E>`
` | `chain(java.util.List<? extends Acquirable<? extends E>> list)` コンストラクタ引数で指定された`Acquirable`を順に `Acquirable.acquire()`する実行権マネージャを生成します。
`static Acquirable<java.lang.RuntimeException>` | `doLock(java.util.concurrent.locks.Lock lock)` `Acquirable.acquire()`で`Lock.lock()`を実行し、 `Acquirable.release()`で`Lock.unlock()` を実行する実行権マネージャを生成します。
`static Acquirable<java.lang.InterruptedException>` | `doSemaphore(java.util.concurrent.Semaphore semaphore)` `Acquirable.acquire()`で`Semaphore.acquire()`を実行し、 `Acquirable.release()`で`Semaphore.release()`を実行する実行権マネージャを生成します。
`static
`<E extends java.lang.Exception> Fn<java.lang.Object,? extends Acquirable<java.lang.InterruptedException>,E>`
` | `doSemaphoreFactory(int permit, boolean fair)` `Acquirable.acquire()`で`Semaphore.acquire()`を実行し、 `Acquirable.release()`で`Semaphore.release()`を実行する実行権マネージャ のファクトリを生成します。
`static Acquirable<java.lang.RuntimeException>` | `tryLock(java.util.concurrent.locks.Lock lock)` `Acquirable.acquire()`で`Lock.tryLock()`を実行し、 `Acquirable.release()`で`Lock.unlock()`を実行する実行権マネージャを生成します。
`static Acquirable<java.lang.RuntimeException>` | `trySemaphore(java.util.concurrent.Semaphore semaphore)` `Acquirable.acquire()`で`Semaphore.tryAcquire()`を実行し、 `Acquirable.release()`で`Semaphore.release()`を実行する実行権マネージャを生成します。
`static
`<E extends java.lang.Exception> Fn<java.lang.Object,? extends Acquirable<E>,E>`
` | `trySemaphoreFactory(int permit, boolean fair)` `Acquirable.acquire()`で`Semaphore.tryAcquire()`を実行し、 `Acquirable.release()`で`Semaphore.release()`を実行する実行権マネージャ のファクトリを生成します。

クラス java.lang.Object から継承されたメソッド
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

フィールドの詳細

### ANY

    public static final Acquirable<java.lang.RuntimeException> ANY

  無制限に実行権を与える実行権マネージャです。
  適用しているデザインパターン：Null Object。

### NONE

    public static final Acquirable<java.lang.RuntimeException> NONE

  常に実行権を与えない実行権マネージャです。
  適用しているデザインパターン：Null Object。

### INTERRUPT

    public static final Acquirable<java.lang.RuntimeException> INTERRUPT

  常に実行権を与えず、実行したスレッドに対し`Thread.interrupt()`を実行する実行権マネージャです。
  適用しているデザインパターン：Null Object。

### INTERRUPTED_EXCEPTION

    public static final Acquirable<java.lang.InterruptedException> INTERRUPTED_EXCEPTION

  常に実行権を与えず、 実行したスレッドに対し`Thread.interrupt()`を実行し、 `InterruptedException`を原因として持つ `IllegalStateException`を投げる実行権マネージャです。
  適用しているデザインパターン：Null Object。

メソッドの詳細

### acquire

    public static <C,R,E extends java.lang.Exception> Fn<C,R,E> acquire(Fn<? super C,? extends Acquirable<? extends E>,? extends E> acquireGetter,
                                                                        Fn<? super C,? extends R,? extends E> trueFn,
                                                                        Fn<? super C,? extends R,? extends E> falseFn)

  取得した`Acquirable`で実行権を制御する関数を生成します。
  適用しているデザインパターン：trueFnへ委譲する処理のBalking。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  パラメータ:
    `acquireGetter` - 実行権マネージャのファクトリ。
    `trueFn` - 実行権の取得に成功したか`Acquirable`が存在しない場合の委譲先。
    `falseFn` - 実行権の取得に失敗した場合の委譲先。
  戻り値:
    関数。
  関連項目:
    `AcquireFn`

### doLock

    public static Acquirable<java.lang.RuntimeException> doLock(java.util.concurrent.locks.Lock lock)

  `Acquirable.acquire()`で`Lock.lock()`を実行し、 `Acquirable.release()`で`Lock.unlock()` を実行する実行権マネージャを生成します。
  適用しているデザインパターン：`Lock`のAdapter。

  パラメータ:
    `lock` - ロッククラス。
  戻り値:
    実行権マネージャ。
  関連項目:
    `DoLock`

### doSemaphore

    public static Acquirable<java.lang.InterruptedException> doSemaphore(java.util.concurrent.Semaphore semaphore)

  `Acquirable.acquire()`で`Semaphore.acquire()`を実行し、 `Acquirable.release()`で`Semaphore.release()`を実行する実行権マネージャを生成します。
  適用しているデザインパターン：`Semaphore`のAdapter。

  パラメータ:
    `semaphore` - セマフォ。
  戻り値:
    実行権マネージャ。
  関連項目:
    `DoSemaphore`

### tryLock

    public static Acquirable<java.lang.RuntimeException> tryLock(java.util.concurrent.locks.Lock lock)

  `Acquirable.acquire()`で`Lock.tryLock()`を実行し、 `Acquirable.release()`で`Lock.unlock()`を実行する実行権マネージャを生成します。
  適用しているデザインパターン：`Lock`のAdapter。

  パラメータ:
    `lock` - ロッククラス。
  戻り値:
    実行権マネージャ。
  関連項目:
    `TryLock`

### trySemaphore

    public static Acquirable<java.lang.RuntimeException> trySemaphore(java.util.concurrent.Semaphore semaphore)

  `Acquirable.acquire()`で`Semaphore.tryAcquire()`を実行し、 `Acquirable.release()`で`Semaphore.release()`を実行する実行権マネージャを生成します。
  適用しているデザインパターン：`Semaphore`のAdapter。

  パラメータ:
    `semaphore` - セマフォ。
  戻り値:
    実行権マネージャ。
  関連項目:
    `TrySemaphore`

### chain

    public static <E extends java.lang.Exception> Acquirable<E> chain(java.util.List<? extends Acquirable<? extends E>> list)

  コンストラクタ引数で指定された`Acquirable`を順に `Acquirable.acquire()`する実行権マネージャを生成します。 `Acquirable.acquire()`による実行権の取得に失敗した場合、 既に実行権を取得した`Acquirable` を逆順に`Acquirable.release()`します。
  適用しているデザインパターン：`Acquirable`のComposite。

  型パラメータ:
    `E` -
  パラメータ:
    `list` - 実行権マネージャの配列。
  戻り値:
    関数。
  関連項目:
    `AcquirableChain`

### doSemaphoreFactory

    public static <E extends java.lang.Exception> Fn<java.lang.Object,? extends Acquirable<java.lang.InterruptedException>,E> doSemaphoreFactory(int permit,
                                                                                                                                                 boolean fair)

  `Acquirable.acquire()`で`Semaphore.acquire()`を実行し、 `Acquirable.release()`で`Semaphore.release()`を実行する実行権マネージャ のファクトリを生成します。
  適用しているデザインパターン：`Acquirable`のAbstract Factory。

  型パラメータ:
    `E` -
  パラメータ:
    `permit` - 初期パーミット数。
    `fair` - フェアなセマフォを作成する場合は true。
  戻り値:
    関数。
  関連項目:
    `DoSemaphoreFactory`

### trySemaphoreFactory

    public static <E extends java.lang.Exception> Fn<java.lang.Object,? extends Acquirable<E>,E> trySemaphoreFactory(int permit,
                                                                                                                     boolean fair)

  `Acquirable.acquire()`で`Semaphore.tryAcquire()`を実行し、 `Acquirable.release()`で`Semaphore.release()`を実行する実行権マネージャ のファクトリを生成します。
  適用しているデザインパターン：`Acquirable`のAbstract Factory。

  型パラメータ:
    `E` -
  パラメータ:
    `permit` - 初期パーミット数。
    `fair` - フェアなセマフォを作成する場合は true。
  戻り値:
    関数。
  関連項目:
    `TrySemaphoreFactory`

概要 | パッケージ | クラス | 使用 | 階層ツリー | 非推奨 API | 索引 | ヘルプ
| Woolpack API
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド

Copyright (C) 2006-2007 Takahiro Nakamura. All rights reserved.