0

イベントとイベントリスナーを使用して、Java の 2 つのスレッド間で一連の情報を渡すことは可能ですか? 問題を単純化すると、プロデューサーとコンシューマーがあり、それぞれが独自のスレッドに「住んでいます」。プロデューサーはメッセージを作成し、メッセージが作成されると、「理想的には」イベントがコンシューマーに送信されます。コンシューマーは多くのことを行いますが、プロデューサー イベントもリッスンします。これは、コンシューマーをブロックしたり、プロデューサーを待機したりできないことを意味します。

これが可能であれば、どこから作業する一般的な例を見つけることができますか?

モデルの詳細については、参照してください。

スレッド間でオブジェクトのセットを渡す

4

3 に答える 3

0

はい、あるスレッドから別のスレッドにメッセージを渡すことができます特定のイベントで
は、これらのスレッドを実行する必要がある3番目の静的クラスが必要です。

  1. 1 つのスレッドは、静的クラスに存在するリスト内の情報を送信しますが、
    他のスレッドは
  2. スレッドはその静的クラスのリストから読み取っています。最初のスレッドによって送信されたデータが存在する場合、このスレッドはそれに応じて何らかの操作を実行します。
于 2013-06-17T11:50:05.610 に答える
0

イベントとイベントリスナーを使用して、Java の 2 つのスレッド間で一連の情報を渡すことは可能ですか?

はい。

問題を単純化すると、プロデューサーとコンシューマーがあり、それぞれが独自のスレッドに「住んでいます」。プロデューサーはメッセージを作成し、メッセージが作成されると、「理想的には」イベントがコンシューマーに送信されます。

イベントとイベント リスナーは、この問題を解決するために必要なものよりも複雑です。

必要なのはメッセージ キューです。

Java は、AbstractQueueのConcurrentLinkedQueue実装を提供します。プロデューサー スレッドはキューにメッセージを追加し、コンシューマー スレッドはキューからメッセージ (ポーリング) を取得します。

コンシューマ スレッドがキューに何も見つからない場合、X ミリ秒間スリープ状態になり、キューを再度チェックします。

イベントとイベント リスナーを引き続き使用する場合は、この有益な記事Event Listenerをお読みください。Listイベント リスナーを格納する をスレッド セーフにする必要があります。

于 2013-06-17T14:11:48.150 に答える