1

シンクロナイズド キーワードについては知っていますが、明確に理解しておきたいと思います。

したがって、synchronized キーワードを使用しない場合、インスタンス変数は 2 つのスレッドによって上書きされる可能性がありますが、synchronized キーワードを使用すると、一度に 1 つのスレッドしかメソッドに入ることができません。右?

4

2 に答える 2

2

同期キーワードを使用しない場合、インスタンス変数が2つのスレッドで上書きされる可能性があります

「上書き」されることはありませんが、2つのスレッドで同時に実行される可能性があるため、このような状況を処理するように設計されていない場合、不整合が発生する可能性があります。

同期キーワードを使用する場合、一度に1つのスレッドのみがメソッドに入る可能性があります。

メソッドを作成する場合、これは正しいですsynchronized。そのキーワードは、相互排除を含む一定数の保証を提供します。

于 2013-01-26T07:09:30.940 に答える
2

2つのスレッドが非同期メソッドに入り、共有状態を更新すると、不整合が発生する可能性があります。

public synchronized void method(){ 
      //only one thread will be able to enter (IF SAME INSTANCE)
}

しかし、それはまた、起こる前の関係を確立します。これはマルチスレッドの可視性の部分です。

2つのアクションは、起こる前の関係によって順序付けることができます。あるアクションが発生した場合(別のアクションの前)、最初のアクションは2番目のアクションの前に表示され、順序付けられます。

起こる-JLSの前

于 2013-01-26T07:10:42.193 に答える