6

同期は、メソッド名の前に Synchronized キーワードを配置することによって、オブジェクトまたはメソッドへの排他的アクセスを提供することによって機能します。メソッドへの 2 つ以上のアクセスが同時に発生した場合に、特定の 1 つのアクセスをより優先したい場合はどうすればよいでしょうか。私たちはそれを行うことができますか?

または、Java での同期の概念を誤解している可能性があります。私を修正してください。他にも質問がありますが、

どのような要件の下でメソッドを同期化する必要がありますか? メソッドを同期するのはいつですか? そしていつブロックを同期させるのですか?また、メソッドを同期化すると、クラスも同期化されますか? ここで少し混乱。

助けてください。ありがとう。

4

4 に答える 4

0

同期されたメソッド/ブロックまたはそれらへのアクセスの間に「優先度」などはありません。他のスレッドがすでにオブジェクトのモニターを保持している場合 (つまり、別の同期メソッドまたはsynchronized (this) {}ブロックが進行中で、 への呼び出しによってモニターを解放していない場合this.wait())、他のすべてのスレッドはそれが完了するまで待機する必要があります。

java.util.concurrentパッケージには、優先キューなど、正しく使用すれば役立つ可能性のあるクラスがあります。それらを正しく使用する方法に関する完全なガイダンスは、おそらくこの質問の範囲を超えています-最初に適切なチュートリアルを読む必要があります.

于 2013-11-10T11:30:25.673 に答える