メソッドが静的同期の場合に同時にアクセスするスレッドの数と、メソッドが静的である場合に同時にアクセスするスレッドの数、およびメソッドが同期インスタンスメソッドの場合に同時にアクセスするスレッドの数は?
1 に答える
2
- onlyを使用
static
しても、スレッドがいつでもメソッドにアクセスするのを防ぐことはできません synchronized
onlyを使用すると、取得したモニターはメソッドが呼び出されたオブジェクトに属します。同じクラスの他のインスタンスで同じメソッドを呼び出すことができます- を使用する
static synchronized
と、取得したモニターはclass
特定のオブジェクトではなく に属します。つまり、静的メソッドは、具体的なインスタンスに関係なく、同時に 1 つのスレッドによってのみ呼び出すことができます。
結果: メソッドの 1 つが静的である場合、複数のスレッドが同じオブジェクトで 2 つの同期メソッドを同時に呼び出すことができることに注意してください。これは落とし穴になる可能性があります。
于 2013-03-10T15:03:30.933 に答える