在我當前的項目中,我們使用事件系統來傳播沒有優先級的事件。我的意思是。問題在於沒有優先級調用事件,所以它意味着監聽類將它們添加到偵聽器容器中以激發他們的「消息」代碼。事件系統訂購問題
它可能會導致分析結果有時難以預測。
您是否知道任何現有解決方案能夠以「好方法」處理事件的排序?
在我當前的項目中,我們使用事件系統來傳播沒有優先級的事件。我的意思是。問題在於沒有優先級調用事件,所以它意味着監聽類將它們添加到偵聽器容器中以激發他們的「消息」代碼。事件系統訂購問題
它可能會導致分析結果有時難以預測。
您是否知道任何現有解決方案能夠以「好方法」處理事件的排序?
優先事件是地獄之路。沒有字面意思。 您需要跟蹤哪些對象需要什麼優先級。那麼你會用完優先事項。接下來你意識到你已經將相同的依賴關係(優先級常量類)硬編碼到了100個類中,並且將它們全部綁定在一起。也許不是,但是陷阱很多,而不是幽默。 你必須看看你想實現什麼: 你想要訂購流程執行順序。除了完全任意的事實,即事件觸發這些過程外,它與事件無關。
解決方法有很多:
在監聽器類中添加一個排序依賴標誌。這是假設監聽者A被調用,它對監聽者B有依賴性,然後讓B首先執行。同樣,您可以在所有監聽器類中放置依賴條件,從而創建所需的層次結構。
只要確保您不要添加循環依賴或仔細處理它。
PriorityBlockingQueue
可能會幫你。使你的事件實現可比較,並且事件分派器線程每次都消耗最高優先級的事件。