2

同期メソッドと静的同期メソッドの主な違いを理解しようとしています。

たとえば、いくつかのインスタンスを持つクラスを考えてみEmployeeます。e1e2

synchronized method1() {
    //--- blah blah---
}

がオブジェクトレベルのロックを取得しe1て実行している場合、 によって hwld されたロックが解放されるのを待っています。method1()e2e1

e1クラスレベルでロックを保持している場合も静的同期の場合、e2そのブロックに入ることができません。

static synchronized method1() {
    //--- blah blah---
}

これら2つのケースはどのように異なりますか?静的および非静的の同期メソッドアクセスに違いはありません。

4

1 に答える 1

2

最初の例では、同期はインスタンス レベルで実行されるため、 and を同時に呼び出すe1.method1()e2.method1()、それらを並行して実行できます。

2 番目の例では、同期はクラス レベルで操作されるため、 and を同時に呼び出すe1.method1()e2.method1()、それらは並行して実行されません。

于 2013-03-21T17:45:11.823 に答える