ApplicationEventPublisher 和 @EventListener 在同一个线程上
ApplicationEventPublisher and @EventListener on the same thread
我有一个程序在多个线程上创建可运行对象(来自同一个 class 的实例)。
每个runnable 包含一个使用ApplicationEventPublisher
发布事件和@EventListener 接收事件的对象。
我想做的是工作线程上的接收器只接收从该线程发布的事件。
由于多个线程上的对象中的方法签名是相同的,所以不确定如果一个事件是从一个线程发布的,那么所有线程都会收到相同的事件变化?如果是这样,那么如何确保工作线程只接收在该线程上发布的事件?
事件侦听器侦听同一类型的所有事件,因此这不是 Spring 事件的一个很好的用例。
如果你已经封装了所有 类 并且你打算同步调度事件,你为什么不直接绕过 Spring,丢掉 ApplicationEventPublisher
并调用侦听器事件发生时直接反对?然后工作和事件将在同一个线程上处理。
我有一个程序在多个线程上创建可运行对象(来自同一个 class 的实例)。
每个runnable 包含一个使用ApplicationEventPublisher
发布事件和@EventListener 接收事件的对象。
我想做的是工作线程上的接收器只接收从该线程发布的事件。
由于多个线程上的对象中的方法签名是相同的,所以不确定如果一个事件是从一个线程发布的,那么所有线程都会收到相同的事件变化?如果是这样,那么如何确保工作线程只接收在该线程上发布的事件?
事件侦听器侦听同一类型的所有事件,因此这不是 Spring 事件的一个很好的用例。
如果你已经封装了所有 类 并且你打算同步调度事件,你为什么不直接绕过 Spring,丢掉 ApplicationEventPublisher
并调用侦听器事件发生时直接反对?然后工作和事件将在同一个线程上处理。