ディスラプターに関して次の質問があります。
- 消費者 (イベント プロセッサ) は、EventHandler を実装する Callable または Runnable インターフェースを実装していません。次に、どのように並行して実行できますか。たとえば、このようなダイヤモンド パターンがあるディスラプター実装があります。
c1 P1 - c2 - c4 - c5 c3
c1 から c3 までは p1 の後に並行して動作し、C4 と C5 はそれらの後に動作します。
したがって、従来、私はこのようなものを持っていました(P1とC1-C5が実行可能/呼び出し可能である)
p1.start();
p1.join();
c1.start();
c2.start();
c3.start();
c1.join();
c2.join();
c3.join();
c4.start();
c4.join();
c5.start();
c5.join();
しかし、ディスラプターの場合、どのイベント ハンドラーも Runnable または Callable を実装していません。
次のシナリオを考えてみましょう:
私のコンシューマ C2 は、イベントへの注釈のために Web サービス呼び出しを行う必要があります。SEDA では、そのような 10 個の C2 要求に対して 10 個のスレッドを起動できます [キューからメッセージを引き出す + Web サービス呼び出しを行い、次の SEDA キューを更新する]。この場合、単一のインスタンスであるイベント プロセッサ C2 (if) が 10 個の C2 リクエストを順番に待機します。