ApplicationEventPublisher 和 @EventListener 在同一个线程上

ApplicationEventPublisher and @EventListener on the same thread

我有一个程序在多个线程上创建可运行对象(来自同一个 class 的实例)。 每个runnable 包含一个使用ApplicationEventPublisher 发布事件和@EventListener 接收事件的对象。

我想做的是工作线程上的接收器只接收从该线程发布的事件。

由于多个线程上的对象中的方法签名是相同的,所以不确定如果一个事件是从一个线程发布的,那么所有线程都会收到相同的事件变化?如果是这样,那么如何确保工作线程只接收在该线程上发布的事件?

事件侦听器侦听同一类型的所有事件,因此这不是 Spring 事件的一个很好的用例。

如果你已经封装了所有 类 并且你打算同步调度事件,你为什么不直接绕过 Spring,丢掉 ApplicationEventPublisher 并调用侦听器事件发生时直接反对?然后工作和事件将在同一个线程上处理。