在我目前的项目中,我们使用的事件系统无优先传播事件。我的意思是什么。问题是事件是在没有优先级的情况下调用的,因此它意味着监听类触发它们的“on message”代码,以便将它们添加到监听器容器中。
有时候难以预测难以分析的结果。
您是否知道以“好方式”处理事件排序的任何现有解决方案?
答案 0 :(得分:2)
优先发生事件是地狱的高速公路。没有字面意思。 您需要跟踪哪些对象需要优先级。然后你将没有优先事项。接下来,您意识到您已经将相同的依赖项(优先级常量类)硬编码为100个类,并将它们全部绑定在一起。好吧也许不是,但陷阱很多而且不幽默。 你必须看看你想要实现的目标: 您想订购流程执行顺序。它与事件无关,除了完全随意的事实,即这些过程是由事件触发的。
有很多解决方案:
答案 1 :(得分:1)
在侦听器类中添加排序依赖标志。假设监听器A被调用,它依赖于监听器B,然后让B先执行。同样,您可以在所有侦听器类中放置依赖条件,从而创建所需的层次结构。
请确保不要添加循环依赖项或仔细处理它。
答案 2 :(得分:1)
PriorityBlockingQueue
可能对您有利。使您的Event实现Comparable,并且事件调度程序线程每次都使用最高优先级事件。