当前位置: 首页 > 知识库问答 >
问题:

应用程序EventPublisher和@EventListener在同一线程上

咸亦
2023-03-14

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

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

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

共有1个答案

佘飞鸣
2023-03-14

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

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

 类似资料:
  • 下面的代码片段给我错误< code >不在FX应用程序线程上;当前线程 = < code > Java FX < code >应用程序线程。这个应用程序在java 1.7中运行良好,但是当我把它移到fx8时,它现在出现错误。当我第一次尝试启动应用程序时,它按预期工作。但是在关闭并再次打开舞台后,它不起作用了。 错误也不明确。如果当前线程是fx应用程序线程,那么不在fx应用线程上意味着什么。

  • 问题内容: 我正在尝试从线程中设置文本对象的字符串,但这给了我这个错误: 处理程序类: 我尝试使用,它确实可以工作,但是它使我的程序崩溃。我也尝试在该方法上创建一个Timer,但它给了我与以前相同的错误。 问题答案: 包起来。在它的外面,在while循环中,添加Thread.sleep(1000); 非法状态异常的原因是你试图在JavaFX Application线程以外的其他线程上更新UI。 添

  • 问题内容: 在多线程应用程序中如何使用Hibernate(例如,每个客户端连接在服务器上启动它自己的线程)。 EntityManager应该仅由EntityManagerFactory创建一次,例如: 还是我必须为每个线程以及关闭EM的每个事务重新创建实体? 我的CRUD方法如下所示: 我要不要每次都跑?还是因为每个人都使用自己的缓存创建自己的EntityManager实例而使我陷入麻烦了? 问题

  • 我在一个用C语言编写的多线程服务器应用程序上工作,并在嵌入式Linux上执行。一个线程(我称之为通信线程)应该处理所有套接字I/O(发送和接收消息)。依赖于接收到的消息,通信线程将消息发送到另一个线程(例如Thread)。Controller-Thread)处理所需的序列。控制器线程在序列的末尾创建返回消息。此消息被写回通信线程,该线程应该将它们传输到客户端。 这两个线程之间的通信是通过队列实现的

  • 当我创建一个简单的非多线程JavaFX应用程序并启动它时,该应用程序会创建一些线程(JavaFXApplicationThread、JavaFXLauncher等)。这些线程中的大多数都已命名,但在我的所有JavaFX应用程序中都有一个未命名的线程(“线程-1”或“线程-2”)。我绝对不会创建自己的线程,因为我尝试启动Hello World JavaFX应用程序(由IDEA生成),其中也包含“线程

  • 问题内容: 我在维护的Swing应用程序中遇到了僵局,尽管我有一个可行的解决方法,但我不确定我是否了解自己在做什么,还没有隐藏可能弹出的竞争条件稍后再试。 线程跟踪显示死锁发生在两个线程AWT-EventQueue-0和AWT- EventQueue-1之间。我的第一个问题是,如果其中一个是臭名昭著的事件调度线程。这两个线程在堆栈跟踪的底部都有以下内容: 我认为问题的根源在于应用程序类将域数据与图