确保最大的CPU利用率。我知道golang有这样一个go表达式,但是java不能保证最大的CPU利用率。无限数量的线程消耗额外的系统资源。
发布于 2022-04-12 06:33:27
你的问题还不清楚。但我要猜一猜:未来版本的Java可能具有虚拟线程的特性。
虚拟线程
我怀疑您可能正在寻找新的虚拟线程 (纤维特性被添加为工程织机技术的一部分)。
在今天的Java中,Java线程被映射到主机操作系统线程(“平台线程”)上,一对一。当线程中的Java代码(例如等待存储I/O或网络I/O )时,线程块将不会在该线程上执行进一步的工作,直到阻塞的代码能够继续。
在织机中,每个平台线程都映射了许多虚拟线程。说到“很多”,我指的是成千上万甚至数百万的线程,而现在常用的线程有几十个。
当在虚拟线程中执行的代码阻塞时,JVM“卸载”该虚拟线程,以便将不同的虚拟线程分配给“真实”平台线程。这种将虚拟线程安装和卸载到平台线程以供执行的方法相对来说非常快速和高效,在未来的Loom技术版本中可能会有更快的速度。如此多的应用程序在性能和工作负载吞吐量方面都会有显著的改善。CPU核心将得到更多的锻炼。
要了解更多信息,请参阅Project团队成员的文章、访谈和演示文稿,其中包括Ron和Alan。
你问:
是否有一个FixedThreadPool可以动态地挂起休眠(或其他等待状态)线程并运行新任务?
ExecutorService es = Executors.newVirtualThreadPerTaskExecutor() ;https://stackoverflow.com/questions/71836368
复制相似问题