私の現在のプロジェクトでは、イベントを優先せずに伝播するイベント システムを使用しています。私が正確に意味すること。問題は、イベントが優先度なしで呼び出されることです。つまり、リスニング クラスは、リスナー コンテナーに追加された順序で「on message」コードを起動します。
結果の分析が予測できないほど困難になる場合があります。
「適切な方法」でイベントの順序を処理する既存のソリューションを知っていますか?
私の現在のプロジェクトでは、イベントを優先せずに伝播するイベント システムを使用しています。私が正確に意味すること。問題は、イベントが優先度なしで呼び出されることです。つまり、リスニング クラスは、リスナー コンテナーに追加された順序で「on message」コードを起動します。
結果の分析が予測できないほど困難になる場合があります。
「適切な方法」でイベントの順序を処理する既存のソリューションを知っていますか?
イベントを優先することは、地獄へのハイウェイです。文字通りいいえ。どのオブジェクトにどの優先度が必要かを追跡する必要があります。すると、優先順位がなくなります。次に、同じ依存関係 (優先度定数クラス) を何百ものクラスにハードコーディングし、文字通りそれらをすべて結び付けたことに気付きます。そうではないかもしれませんが、落とし穴は数多くあり、ユーモラスではありません。達成したいことを確認する必要があります。プロセスの実行シーケンスを順序付けたいとします。これらのプロセスがイベントによってトリガーされるという完全に恣意的な事実を除いて、イベントとは何の関係もありません。
多くの解決策があります:
リスナー クラスに一種の依存関係フラグを追加します。つまり、リスナー B に依存するリスナー A が呼び出され、B が最初に実行されるとします。同様に、すべてのリスナー クラスに依存条件を設定して、必要な階層を作成できます。
循環依存を追加したり、慎重に処理したりしないようにしてください。
PriorityBlockingQueue
イベント実装を同等にすることで、イベント ディスパッチャ スレッドが毎回最も優先度の高いイベントを消費します。