使用多少个平台线程来调度虚拟线程

Man*_*odi 1 java virtual-threads

如果我创建一个虚拟线程的执行器服务

Executors.newVirtualThreadPerTaskExecutor()
Run Code Online (Sandbox Code Playgroud)

据我所知,每个任务都在虚拟线程上运行。这些虚拟线程通过平台线程进行调度(希望是交错的)。

这里使用了多少个平台线程?我没有看到任何其他 API 来指定我想要的线程数。我在 Macbook M1 Pro 上使用 Java 21 运行它。

Tho*_*ger 7

没有 API 来指定用于虚拟线程的线程数,但文档告诉Thread您如何通过系统属性更改该数字:

系统属性 描述
jdk.virtualThreadScheduler.parallelism 可用于调度虚拟线程的平台线程数。它默认为可用处理器的数量。
jdk.virtualThreadScheduler.maxPoolSize 调度程序可用的最大平台线程数。默认为 256。