java - マルチスレッド通知に関する質問
给我你的怀抱
给我你的怀抱 2017-05-17 10:01:54
0
1
506
リーリー

論理的に言えば、t1.wait() はメインスレッドをブロックする必要があり、他に通知する場所はありません。
t1.start() を削除した後は、メインスレッドをブロックできる可能性があります。 ###これはどういう意味ですか?コンパイラの最適化?それとも、同期されたコード ブロック内でモニターが操作されない場合、アクティブな通知は終了しますか? ?

给我你的怀抱
给我你的怀抱

全員に返信 (1)
仅有的幸福

実際には、これはスレッドの実行に関係しています。 Javaドキュメントでは、public final synchronized void join(long millis)このメソッドのコメントに一文が書かれています

この実装では、{@code this.isAlive} を条件とした {@code this.wait} 呼び出しのループが使用されます。スレッドが終了すると、{@code this.notifyAll} メソッドが呼び出されます。アプリケーションは、{@code Thread} インスタンスで {@code wait}、{@code Notice}、または {@code NoticeAll} を使用しないことを推奨します。

太字を参照してください。実際には、スレッドの終了後に呼び出されるnotifyAllがウェイクアップの待機を引き起こします。これは、仮想マシンの最適化によって引き起こされるものではありません。あなたの混乱に答えられることを願っています

いいねを押す+0
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!