[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/