[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends-ml 10211] Re: 読書会 ( Java スレッドプログラミング) 第 1 回議 事録宿題について
村山です.
> > -----------
> > staticメソッドに synchronized を設定するということは可能なの
> > だろうか?
> > -----------
> 以下のように、Classクラスのインスタンスに対してlockを行うこと
> になるということではないでしょうか...
多分,次の通りのはずです.
--------
Javaのモニタには二種類ありまして,一つはインスタンスに対応した
モニタで,もう一つはクラスに対応したモニタです.その実装に関して
は規定されていませんので,どこにどのような形式で保持するかは
JavaVMの実装依存です.(Classクラスのインスタンスに対応していると
言えば言えなくもないのでしょうが...)
staticなsynchronized文やsynchronizedメソッドは,そのstaticな
モニタを取得/開放します.ですので,non-staticなsynchronized文/
メソッドとstaticなsynchronized文/メソッドが,同時に実行される
ことはありえます.
ちなみに,バイトコードレベルではsynchronized文はmonitorenter/
monitorexitになりますが,staticなsynchronized文をサポートする
バイトコードはないため,それ用のstaticメソッドをコンパイラが
自動的に作成し,対応しています.
--
村山敏清 株式会社ネットジーン
〒169-0051 東京都新宿区西早稲田2-15-10 2F
E-mail:murayama@xxxxxxxxxxxxx
TEL:03-5155-3720 FAX:03-5155-3723
http://www.netgene.co.jp/