スレッドのロックとモニタ

□イントロ
・join()メソッド
 他のスレッドの実行が終了するまで、呼び出しもとのスレッドが待機する。

・同期のタイミングを、スレッドの制御の途中に出来ない。
・待機する自分と同期を取る相手の二者間の同期だから、
 特定のスレッドから特定のスレッドを操作する形の同期も不可。

・メソッド、変数のロック
 →あるスレッドがアクセスしてる間、他のスレッドはアクセス不可にする。
・スレッドのモニタ
 スレッドのブロックと回復を行う

□同期指定コードのロック
ロック:当該コードに実行権を与える為のトークン。
同期指定されたコードを利用しようとするスレッドは、
そのロックを取得して初めて利用できる。

同期指定方法:synchronized 宣言

他スレッドが利用中とかで、
ロックが取得できない場合は、ロック探索状態になる。

ロックを取得しているスレッドは、
当該コードから制御が外れた時点で、ロックを解放する。
→他のスレッドがロックを取得できるようになる。

□モニタ
モニタ:
スレッドのブロックと回復を行うオブジェクト。
→スレッドの排他制御を行うオブジェクト

ブロック状態:
JavaVM外部からのデータが存在しない場合や、
当該リソースがビジーだった場合、
そのメソッドは実行待機状態に入るが、
実行中の状態から退いた状態。

ブロック状態にするには→wait()メソッド
ブロック回復にするには→notify()メソッド

同期指定コードのロックを取得しようとしてる時もブロック状態。

□コンクル
synchronizedされた同期指定コードを持つオブジェクトがモニタ。

ref:
http://www.nextindex.net/java/thread/lock.html
2008-02-25 03:31 : __lang__java : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud