- synchronizedを非staticメソッドに対して宣言する。もしくは、特定のインスタンスに対してsynchronizedブロックによってロックを取得する
→
該当オブジェクトのロックが取得できる
A#run()で、ロックを取得している場合
A a = new A();
A b = new A();
a.start();
b.start();
は両方とも実行可能となる
- staticメソッドに対して宣言する。もしくはクラスに対してロックを取得すると、それはクラスオブジェクトに対するロックとなる。
そのロックを取得している間に、そのクラスのインスタンスすべてに対して同期化ができるかというと決してそんなことはないというのが要注意
とりあえず、サイズ0のbyte[]を使用してロックオブジェクトをうまく使えと。
最終更新:2005年09月15日 15:21