1. ホーム
  2. java

[解決済み] シンクロナイズド」とはどういう意味ですか?

2022-03-19 11:14:26

質問

の使い方や意味について、いくつか質問があります。 synchronized というキーワードがあります。

  • の意義は何ですか? synchronized というキーワードがあります。
  • メソッドはどのような場合に synchronized ?
  • プログラム的、論理的にはどうなのか?

どのように解決するのですか?

その synchronized キーワードは、異なるスレッドが同じ変数、オブジェクト、リソースを読み書きすることについてのすべてです。 これはJavaの些細な話題ではありませんが、以下はSunからの引用です。

<ブロッククオート

synchronized メソッドを使用すると、シンプルな スレッド防止策 干渉とメモリの一貫性 エラー: もしオブジェクトが 複数のスレッドがある場合、すべての読み取りまたは そのオブジェクトの変数への書き込みは は、同期化されたメソッドを介して行われます。

とてもとても小さな一言で言えば 2つのスレッドが同じ「リソース」を読み書きしている場合、例えば foo これらのスレッドがアトミックな方法で変数にアクセスすることを保証する必要があります。 このとき synchronized キーワードを使用すると、スレッド 1 にはスレッド 2 が行った foo あるいは、もっと悪いことに、半分しか変更されていないかもしれません。 これは、論理的に期待されることではありません。

繰り返しになりますが、これはJavaでは自明なことではありません。 もっと詳しく知りたい方は、ここSOやインターネッツのトピックを探ってみてください。

という名前になるまで、これらのトピックを探求し続けてください。 "Brian Goetz" という言葉が恒久的に関連づけられるようになりました。 コンカレンシーと呼ばれるものです。 が脳裏に浮かびます。