当你有一个异步事件总线和fire事件时,让我们说在UI中捕获的模型中你可能有以下问题:
已注册的处理程序在工作线程中执行,但所有UI swing更改都需要在AWT事件线程中执行.这意味着您需要将所有处理程序clode包含在内EventQueue.invokeLater(...).
这看起来像很多锅炉板代码.我想知道是否有更智能的解决方案来解决这个问题.
guava事件总线的扩展如何标记在特殊线程中执行的处理程序?这可以用注释标记,例如@ExecuteWithinEDT:
class EventBusChangeRecorder {
@Subscribe @ExecuteWithinEDT void recordCustomerChange(ChangeEvent e) {
recordChange(e.getChange());
}
}
Run Code Online (Sandbox Code Playgroud)