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

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

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

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

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

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

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート