如何在Quarkus中获取ThreadFactory?

Mic*_*ael 5 quarkus

我正在尝试将 JEE 服务迁移到Quarkus,并想知道如何在 Quarkus 应用程序中获取线程工厂。简单地创建一个像javaExecutors.defaultThreadFactory();JavaSE 中那样的吗?

在 Java EE 环境中,您通常会使用托管线程工厂来创建执行线程:

@Resource
private ManagedThreadFactory mtf;
Run Code Online (Sandbox Code Playgroud)

知道如何在 Quarkus 应用程序中正确执行此操作吗?

添加:遗憾的是,使用 ManagedExecutor 是不可能的,因为某些库(例如 Apache HttpAsyncClient)需要 ThreadFactory 进行配置。

And*_*ert 4

除非您有需要创建实际线程的特殊用例,Executor否则我建议使用ThreadFactory. 这通常更好,因为您可以向 Executor 提交轻量级工作对象(Runnable/ Callable/etc),并且它将在 Executor 的线程池(由 Quarkus 管理)上运行,而不是创建重量级线程。

Quarkus 提供对 MicroProfile Context Propagation 的支持,这基本上是 Java EE 并发的扩展。ManagedExecutor要使用它,您可以像这样注入:

import org.eclipse.microprofile.context.ManagedExecutor;

// ...

@Inject
ManagedExecutor exec;
Run Code Online (Sandbox Code Playgroud)