キーワードの使用法と重要性に関していくつか質問がありますsynchronized
。
- キーワードの重要性は何ですか
synchronized
? - メソッドはいつ実行すべきですか
synchronized
? - プログラム的および論理的には何を意味するのでしょうか?
ベストアンサー1
キーワードsynchronized
は、異なるスレッドが同じ変数、オブジェクト、リソースを読み書きすることです。これは Java では些細な話題ではありませんが、Sun からの引用を次に示します。
synchronized
メソッドを使用すると、スレッドの干渉やメモリの一貫性エラーを防ぐためのシンプルな戦略が可能になります。オブジェクトが複数のスレッドから参照できる場合、そのオブジェクトの変数へのすべての読み取りまたは書き込みは、同期メソッドを通じて実行されます。
ごく簡単に言うと、という変数など、同じ「リソース」に対して読み取りと書き込みを行うスレッドが 2 つある場合foo
、これらのスレッドがアトミックな方法で変数にアクセスするようにする必要があります。synchronized
キーワードがないと、スレッド 1 はスレッド 2 が に対して行った変更を認識しない可能性がありますfoo
。さらに悪いことに、半分しか変更されない可能性があります。これは、論理的に期待される結果ではありません。
繰り返しますが、これは Java では重要なトピックです。詳しくは、SO やインターネットで次のトピックを調べてください。
「Brian Goetz」という名前があなたの脳内で「並行性」という用語と永久に関連付けられるようになるまで、これらのトピックを調べ続けてください。