マルチスレッド同時プログラミングメモ 05 (XiaoDi Classroom) ----- スレッド間の通信

ここでは、あるスレッドの状態変更が別のスレッドに依存する方法でそれを行います。

しかし、この空ループ方法は絶対に良くありません。

 

 

 これを行うには、wait メソッドと Notice メソッドを使用できます。

複数のスレッドを作成すると、プログラムが終了しておらず、まだ実行中であることがわかります。

 この時点で、jconsole を呼び出してスレッドのステータスを確認します。

待機状態であることが分かりました。

 これは、待機によってスレッドがランダムに起動されるためです。

すべてを起動したい場合は、メソッドをnotifyallに変更できます。

 

 スレッドがクラシック モデルのプロデューサーとコンシューマーに通知するまで待ちます

 仲介者:

プロデューサー:

消費者:

スタートアップクラス:

このように、スレッドを使用してこの例を完成させます。

パイプフローを使用して通信する

まず読み取り操作を書いてみましょう。

次に、クラスを開始するメイン メソッドを作成します。

main メソッドもスレッドであることがわかっているので、スレッド間の通信を完了します。

 Thread.join通信

 

これは明らかに私たちの期待を満たしていません。

 結合を追加するだけです。

 

これは私たちの要件を満たしています。

 

 ThreadLocal の使用:

 

 条件の使用法:

このブロックでは、前のスレッド通信のコンシューマーとプロデューサーの中間者コードを変更しました。

 

 

 

このようにして、さまざまな条件に従ってウェイクアップまたは待機するスレッドを指定できます。

 

おすすめ

転載: blog.csdn.net/weixin_52618349/article/details/129977236