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

ConsumeEvent(blocking=true)正在执行器线程上运行

郑鸿朗
2023-03-14

QUUKUS版本2.1.2.最终的

在quarkusDev中运行时,一切都在正确的线程(vert.x-worker-thread-x)中运行,甚至遵守quarkus。维特斯。工作池大小属性,如我所料。

当运行从构建任务构建的quokus-app时,我看到执行线程为(执行器-线程-x)。

不确定为什么执行线程在运行应用程序时发生变化,而不是在quakusDev中运行。顺便说一句,我使用了完全相同的属性,无论是夸克开发和运行构建任务的输出。

我已经创建了一个示例项目来展示上面描述的问题。(https://github.com/owlkaboom/quarkus-threading-question)这个示例项目使用2.2.1-最终,因为我想看看这是否在以后的版本中得到解决。

您会注意到它将500个项目“提交”到一个eventbus中,当您使用quarkusDev运行它时,您会注意到它实际上正确使用工作线程并遵守池大小限制。

当您通过java-jar构建和运行时,您现在会注意到它不遵循工作线程,而是在执行线程上运行。

共有1个答案

伯博
2023-03-14

上述问题并非预期行为。打开了一个新的GitHub问题(https://github.com/quarkusio/quarkus/issues/19911).

这不是预期的行为,一旦GitHub问题得到解决/合并,这种行为就不会再发生。

 类似资料:
  • 本文向大家介绍iOS 在主线程上执行,包括了iOS 在主线程上执行的使用技巧和注意事项,需要的朋友参考一下 示例 当异步执行任务时,通常需要确保在主线程上运行一段代码。例如,您可能要异步访问REST API,但将结果放在屏幕上的UILabel中。在更新UILabel之前,必须确保您的代码在主线程上运行: 每当您更新屏幕上的视图时,请始终确保您正在主线程上执行此操作,否则可能会发生未定义的行为。

  • 问题内容: 我有一个正在运行的线程,但是从外面我无法绕过一个值来停止该线程。如何在内部发送false / true值或调用运行线程的公共方法?当我按下按钮1?例如: 或 跟进(校对): 问题答案: 如果您通过类而不是通过a定义它,则可以调用实例方法。 还要注意,由于多个内核具有自己的关联内存,因此您需要警告处理器该状态可能在另一个处理器上更改,并且它需要监视该更改。听起来很复杂,但只需将’vola

  • 我正在使用线程池执行器更改遗留设计。详情如下:- 遗留:-对于遗留设计,在应用程序启动时创建600个线程。和放置在各种池中,然后在需要时提取这些池,并将任务分配给相应的线程。 新:-在新设计中,我将线程池替换为执行器服务 我观察到的是,对于Executor,在启动时不会创建线程。它们是在从客户端激发请求时创建的。因此,与前一个线程相比,在内存中创建的线程要少得多。 但我的问题是,这样做是否正确,因

  • 我确信这两个列表都不是空的,并且正在调用,但是没有调用order execution run方法....

  • 我试图用Java实现一个简单的客户机-服务器应用程序。 这是代码: 客户端.java 服务器.java 这是主要类: 代码的逻辑很简单:客户端和服务器都在等待< code>while(true)循环中的消息。 服务器的< code>listen方法中的< code>while循环执行得很好。但是,在< code>listenForMessages方法中,循环似乎只执行一次。我只看到一个“在循环”印

  • 问题内容: 我最近遇到了这个问题: java.util.NoSuchElementException线程“ Thread-4”中的异常java.lang.IllegalStateException:不在FX应用程序线程上;仅在FX应用程序线程上有效。currentThread =线程4 该代码适用于jdk7,但不适用于jdk8,该代码如下所示: 然后我从以下代码中调用此线程: 我要做的就是从其他具