1

次の違いは何ですか:

public synchronized void test(){}

public void test() {
   synchronized(Sample.class){}
}
4

3 に答える 3

5

違いをより明確にするために、最初のものは次のように書き直すことができます。

public void test() {    
   synchronized(this){    
   }    
}

違いは、1 つ目はクラスのインスタンスで同期されるのに対し、2 つ目はクラス自体で同期されることです。

test()最初のケースでは、クラスの 2 つのインスタンスで2 つのスレッドを同時に実行できます。第二に、彼らはできません。

于 2014-12-07T07:31:49.723 に答える