如果我想为特定操作分配单独的线程池,我应该如何确定线程池大小?

问题描述 投票:0回答:1

我有一个在生产中运行的 Spring boot 应用程序。我正在实现一个异步功能,该功能导出可以在其单独的线程池上运行的特定指标,而不会阻塞主应用程序线程。我只是在想如何决定我需要多少个线程? 我正在使用 Java 并为此使用 ExecutionrService。

ExecutorService executorService = Executors.newFixedThreadPool(5);
java multithreading threadpool
1个回答
0
投票

虚拟线程

您评论说您的后台任务不受 CPU 限制,它们确实涉及阻塞,例如文件 I/O、日志记录、网络调用、访问数据库等。

在这种情况下,您应该考虑在 Java 21+ 中使用虚拟线程纤维)。使用“此执行程序服务”实现时,将为您提交的每个任务创建一个新的虚拟线程。当您的任务结束时,线程也结束。虚拟线程在内存和 CPU 方面是如此“便宜”,以至于您可以合理地让数百万个线程在传统硬件上同时运行。 因此,当使用虚拟线程时,您的问题在这里变得毫无意义。

搜索 Stack Overflow 以了解更多信息,因为虚拟线程已被多次提及。另请参阅 Ron Pressler、Alan Bateman 和 José Paumard 的精彩视频演讲。

© www.soinside.com 2019 - 2024. All rights reserved.