何时使用平台线程而不是虚拟线程

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

Java 21 引入了轻量级虚拟线程 API。我遇到的每个教程都将它们描述为“与通用平台线程一样,或更可扩展”。

我知道虚拟线程在平台线程之上运行,但仅从用户角度来看,我想知道现在是否还有任何理由直接使用平台线程,例如 ExecutorServices。

我对选项不感兴趣,而是对具体示例感兴趣,例如在 Linked- 和 ArrayList 之间的争论中插入。

java virtual-threads
1个回答
0
投票

其要点是编程风格,如此处所述 JEP-444

  1. 你可以使用操作系统线程,但是操作系统线程将成为你的高并发代码的瓶颈。
  2. 您可以使用异步代码(如 React 和其他框架所做的那样),但随后您会承受大量回调和更复杂的调试场景。
  3. 或者您可以使用虚拟线程,每个请求有 1 个线程,并假装操作系统可以处理它。

需要注意的是,当您的任务主要受 I/O 限制时,它效果很好。例如在 Web 应用程序中,您进行一些处理,然后调用数据库(并等待)。

对于 CPU 密集型任务(如并行内存排序算法),这不是正确的方法。

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