シンクロナイズド キーワードについては知っていますが、明確に理解しておきたいと思います。
したがって、synchronized キーワードを使用しない場合、インスタンス変数は 2 つのスレッドによって上書きされる可能性がありますが、synchronized キーワードを使用すると、一度に 1 つのスレッドしかメソッドに入ることができません。右?
シンクロナイズド キーワードについては知っていますが、明確に理解しておきたいと思います。
したがって、synchronized キーワードを使用しない場合、インスタンス変数は 2 つのスレッドによって上書きされる可能性がありますが、synchronized キーワードを使用すると、一度に 1 つのスレッドしかメソッドに入ることができません。右?
同期キーワードを使用しない場合、インスタンス変数が2つのスレッドで上書きされる可能性があります
「上書き」されることはありませんが、2つのスレッドで同時に実行される可能性があるため、このような状況を処理するように設計されていない場合、不整合が発生する可能性があります。
同期キーワードを使用する場合、一度に1つのスレッドのみがメソッドに入る可能性があります。
メソッドを作成する場合、これは正しいですsynchronized
。そのキーワードは、相互排除を含む一定数の保証を提供します。
2つのスレッドが非同期メソッドに入り、共有状態を更新すると、不整合が発生する可能性があります。
public synchronized void method(){
//only one thread will be able to enter (IF SAME INSTANCE)
}
しかし、それはまた、起こる前の関係を確立します。これはマルチスレッドの可視性の部分です。
2つのアクションは、起こる前の関係によって順序付けることができます。あるアクションが発生した場合(別のアクションの前)、最初のアクションは2番目のアクションの前に表示され、順序付けられます。