public class hiSyncGate extends Object
 扉モデルで同期処理を行います。
 待ち側(複数)はwaitOpen()で扉が開くのを待ちます。
 動機側はopen()で扉を開けます。
 扉が開くと、待ち状態だったスレッドは全て動き出します。
 複数スレッドで待っている場合、一斉に待ちが解かれますが、
 順番は不定です。
 開いた扉はだれかがclose()で閉じるまで開いたままです。
| コンストラクタと説明 | 
|---|
| hiSyncGate()閉じた状態の扉を設置する | 
| hiSyncGate(boolean opened_)初期状態を指定して扉を設置する. | 
| 修飾子とタイプ | メソッドと説明 | 
|---|---|
| void | cancelRepeatOpen()repatOpenをキャンセルする. | 
| void | close()扉を閉じる | 
| boolean | isOpened()扉が開いているか. | 
| void | open()扉を開ける | 
| void | repeatOpen(long delay_,
          long period_)指定ミリ秒後に開き以降指定ミリ秒後に繰り返し開く. | 
| boolean | tryOpen()扉が開いているか. | 
| boolean | tryOpenAndClose()開いてしていたら扉を閉じ、他の侵入を禁止する. | 
| void | waitOpen()扉が開くのを待つ. | 
| void | waitOpen(long timeout_)扉が開くのを待つ. | 
| void | waitOpenAndClose()開くまで待ち直ちに、他の侵入を禁止する. | 
public hiSyncGate()
public hiSyncGate(boolean opened_)
opened_ - true:開いた状態、false:閉じた状態public void waitOpen()
複数個所でwaitOpen()で待っている場合、openされると全箇所起床します。
public void waitOpen(long timeout_)
timeout_ - タイムアウト・ミリ秒public void open()
public void close()
public boolean isOpened()
public boolean tryOpen()
isOpened()と同じです。public boolean tryOpenAndClose()
public void waitOpenAndClose()
複数個所でwaitOpenAndClose()で待っている場合、openされるとただ一か所のみ起床します。
起床する箇所に優先順位はありません。
public void repeatOpen(long delay_,
                       long period_)
wake-upタイミングが時刻的に定まったsleepのように使えます。
   hiSyncGate _gate=new hiSyncGate();
   _gate.repatOpen(0,1000); // 1秒(1000ミリ秒)毎に開く
   for(int _n=0;_n<1000;++_n){
      doSomething(_n);
      _gate.waitOpenAndClose(); // doSomething()の所要時間に関わらず
                                // 一定の間隔でwake-upする
                                // doSomething()が1秒以上かかった場合
                                // は既に開いている 
      }
    _gate.cancelRepeatOpen();
delay_ - 最初に開くまでのミリ秒period_ - 繰り返し間隔public void cancelRepeatOpen()