my_util
クラス SharedObject

java.lang.Object
  拡張my_util.SharedObject

public class SharedObject
extends java.lang.Object

Sharable インタフェースを実装したオブジェクトをスレッド間で共有 するためのロック機構を提供するユーティリティ・クラスです。

関連項目:
Sharable, Semaphore

メソッドの概要
static SharedObject attach(java.lang.String key)
          既に作成された名前つきロックを取得します。
static SharedObject create(java.lang.String key, java.lang.Class sharable_class, int max_sharers)
          スレッド間で共有化するオブジェクト用のロックを作成します。
static SharedObject create(java.lang.String key, java.lang.String sharable_class_name, int max_sharers)
          スレッド間で共有化するオブジェクト用のロックを作成します。
 Sharable get_object()
          take() で既に獲得された名前つきロックに関連付けられている 共有オブジェクトを取得します。
 boolean initialize(java.lang.String[] vals)
          スレッド間で共有されるオブジェクトの初期化を行います。
 boolean leave()
          take() で獲得された名前つきロックを解放します。
 boolean take(boolean sharing, boolean blocking, long time_out)
          名前つきロックの占有/共有ロックを行います。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

create

public static SharedObject create(java.lang.String key,
                                  java.lang.String sharable_class_name,
                                  int max_sharers)
                           throws java.lang.Exception
スレッド間で共有化するオブジェクト用のロックを作成します。 スレッド間で名前つきロックとして SharedObject を使用する場合は、 共有化オブジェクトのクラス名 sharable_class_name に null を指定 します。

パラメータ:
key - ロックの名前
sharable_class_name - Sharable インタフェースを実装した クラスのクラス名。名前つきロックの 機能だけを使用する場合は、null を指定
max_sharers - ロックを共用する最大スレッド数
戻り値:
  • null -- 名前つきロックの作成に失敗した場合
  • 非 null -- 作成された名前つきロック
例外:
java.lang.Exception - sharable_class_name で指定されたクラスが 存在しないかあるいは、そのクラスの インスタンス生成に失敗した場合

create

public static SharedObject create(java.lang.String key,
                                  java.lang.Class sharable_class,
                                  int max_sharers)
                           throws java.lang.Exception
スレッド間で共有化するオブジェクト用のロックを作成します。 スレッド間で名前つきロックとして SharedObject を使用する場合は、 共有化オブジェクト・クラス sharable_class に null を指定します。

パラメータ:
key - ロックの名前
sharable_class - Sharable インタフェースを実装した クラスのクラス名。名前つきロックの 機能だけを使用する場合は、null を指定
max_sharers - ロックを共用する最大スレッド数
戻り値:
  • null -- 名前つきロックの作成に失敗した場合
  • 非 null -- 作成された名前つきロック
例外:
java.lang.Exception - sharable_class で指定されたクラスの インスタンス生成に失敗した場合

attach

public static SharedObject attach(java.lang.String key)
既に作成された名前つきロックを取得します。

パラメータ:
key - ロックの名前
戻り値:
  • null -- key に対応する名前つきロックが作成 されていない場合
  • 非 null -- key に対応付けられた名前つきロック

initialize

public boolean initialize(java.lang.String[] vals)
                   throws java.lang.Exception
スレッド間で共有されるオブジェクトの初期化を行います。 初期化値は文字列配列で指定します。 オブジェクトの初期化は Sharable インタフェースの initialize メソッドを使用して実行されます。

パラメータ:
vals - 共有オブジェクトの初期化値を指定する文字列配列
戻り値:
  • true -- 初期化に成功した場合
  • false -- 初期化に失敗した場合
例外:
java.lang.Exception - 名前つきロックの占有獲得でエラーが起きた場合 あるいは共有オブジェクトの取得に失敗した場合

take

public boolean take(boolean sharing,
                    boolean blocking,
                    long time_out)
             throws java.lang.Exception
名前つきロックの占有/共有ロックを行います。 排他制御の実行は Semaphore クラスの take() メソッドを使用 しています。

パラメータ:
sharing - 占有ロックを行う場合 true を、 共有ロックを行う場合は false を指定します
blocking - ロック獲得まで処理をブロックする場合は true を、 ブロックせずにただちにリターンさせる場合は false を指定します
time_out - blocking が true の場合、ブロッキングする 最大ミリ秒数を指定します。無限にロック獲得を待機 する場合は 0 を指定します
戻り値:
  • true -- ロックが獲得された場合
  • false -- ロック獲得が失敗した場合
例外:
java.lang.Exception - Semaphore.take() メソッドを参照してください

get_object

public Sharable get_object()
                    throws java.lang.Exception
take() で既に獲得された名前つきロックに関連付けられている 共有オブジェクトを取得します。

戻り値:
  • null -- 関連付けられたオブジェクトが存在しない 場合
  • 非 null -- 関連付けられたオブジェクト
例外:
java.lang.Exception - Semaphore.get_exclusive_object() メソッドを 参照してください

leave

public boolean leave()
take() で獲得された名前つきロックを解放します。

戻り値:
  • true -- ロックが解放された場合
  • false -- ロック解放に失敗した場合