私はマルチスレッドをより深く調査し始めました。なぜなら、待機/通知メカニズムを使用すると、同期化キーワードを追加する必要があるのは分かりません。 誰かが少し説明できますか?私は待機通知にmutexを必要とする理由
1
A
答えて
1
たとえば、あるスレッドがバッファからデータを読み取り、1つのスレッドがバッファにデータを書き込む場合。読み込みデータスレッドは、書き込みデータスレッドがブロックデータをバッファに完全に書き込むまで待機する必要があります。配線中のデータスレッドは、読み出しデータスレッドがバッファからデータを完全に読み出すまで待つ必要があります。 wait()メソッドとnotify()メソッドが通常のメソッドで呼び出せる場合、読み込みスレッドはwait()を呼び出し、そのスレッドは待ち行列に追加されます。同じ瞬間に、スレッドはnotify()を呼び出して条件の変更を通知します。読書スレッドは変更を逃し、永遠に待っています。競合状態のために、我々は潜在的に通知を失い、バッファを使用するか、ただ1つのスレッドが永遠に待っていて、プログラムがハングします。 Javaのwait()メソッドも待機する前にロックを解放し、wait()メソッドから戻る前にロックを再取得するので、このロックを使用して条件のチェック(バッファがいっぱいかどうか)を確認し、条件(バッファからの要素を取る)は、Javaで同期メソッドまたはブロックを使用することによって達成できるアトミックです。したがって、それらは相互に排他的な(mutex)同期メソッドまたはブロック内で呼び出される必要があります。
関連する問題
- 1. スレッドの待機と通知のヘルプが必要
- 2. なぜmutexはmutexを必要としないのですか?mutexにはmutexが必要です...
- 3. libstC++が必要な理由を知るには
- 4. デッドロックの待機/通知
- 5. シンクブロックの通知と待機does doesnt work
- 6. ActionMailer経由で通知メールを送信するにはメールクライアントが必要です
- 7. Chromeでこのデスクトップ通知コードが機能しない理由
- 8. List <T>プロパティの通知が機能しない理由
- 9. 2つの待機スレッドの通知メソッド
- 10. Javaは待機スレッドに暗黙的に通知しますか?
- 11. SPIは実際に待機ループを必要としますか?
- 12. 私は期待値と戻り値が異なる理由を理解する助けが必要です。私はcmdモジュールを使用しています
- 13. アクティビティ通知の送信理由0
- 14. 招待するユーザー通知
- 15. pythonタプルとリスト。私はこれが失敗した理由を知る必要があり
- 16. 私のIRCボットサウンドの.tell(通知)機能の論理は?
- 17. プッシュ通知機能を備えたプロビジョニングプロファイルが必要
- 18. 私は入札通知に使用する必要があるSchema.orgのタイプ
- 19. ハードリンクとソフトリンクが必要な理由
- 20. TextWatcherが必要な理由
- 21. RIAが必要な理由
- 22. "rec"が必要な理由
- 23. シングルトンの目的と私たちがプライベートコンストラクタを必要とする理由
- 24. コンソール入力が必要ないときに待機する
- 25. ユーザー通知にコンテキストが必要
- 26. プッシュ通知 - 私がデバイスで通知を受け取った理由は、ライブのアプリが
- 27. 待機スレッドでスレッド2を実行して通知する
- 28. マルチスレッド待ち()通知()
- 29. 読むのクリックイベントは、私がプレスにクリックイベントを読み取る必要が通知
- 30. 待機/通知はどのようにJVMレベルで機能しますか?
お返事ありがとうございます。待っているキューは何ですか?たとえば、複数のスレッドが同じオブジェクト上で待機を呼び出す場合、ロックを解放する順序はありませんか? – asdasdsdf
少なくとも次のようなソースを指している記事を引用している場合:http://www.xyzws.com/javafaq/why-wait- notify-not-all-called-a-synchronized-method-block/127 – Pshemo