java - `Thread.sleep` 与 Project Loom for Java 中的虚拟

我使用 Thread.sleep在为 concurrency 试验或演示 Java 代码时.通过 sleep ,我假装正在进行一些需要一些时间的处理工作。

我想知道在 Project Loom 下做这个.

  • 下Project Loom具有虚拟线程(纤程)的技术,我们可以以相同的方式使用 Thread.sleep 吗?
  • hibernate 虚拟线程与 hibernate 平台/内核线程有什么不同或值得注意的地方吗?

为了自学,我观看了一些 2020 年底的视频,其中包括 Oracle 的 Ron Pressler 介绍 Project Loom 技术(here、here)。虽然很有启发性,但我不记得他提到过 hibernate 线程的问题。

最佳答案

  • Under Project Loom technology with virtual threads (fibers), can we use Thread.sleep in the same way?

看起来是这样。我引用了 OpenJDK wiki 上地址为 blocking operations in Loom 的页面.它在对虚拟线程友好的操作中列出了Thread.sleep(),这意味着

When not pinned, they will release the underlying carrier thread to do other work when the operation blocks.

你继续问,

  • Is there any thing different or noteworthy about sleeping a virtual thread versus sleeping a platform/kernel thread?

文档很少,不清楚实际存在的任何差异是否是有意为之。尽管如此,我倾向于认为 hibernate 虚拟线程的目标是使其语义与 hibernate 普通线程的语义尽可能接近。我怀疑足够聪明的程序会有办法区分,但如果有任何差异上升到“值得注意”的水平,那么我希望它们将被视为错误。我部分基于推理,但我也建议您引用 State of Loom java.net 上的文档,其中列出了它的“关键要点”

  • A virtual thread is a Thread — in code, at runtime, in the debugger and in the profiler.

  • No language changes are needed.

(强调已添加。)

关于java - `Thread.sleep` 与 Project Loom for Java 中的虚拟线程(纤程)不同吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65333188/

相关文章:

javascript - 如何在 Nestjs 中扩展多个 dto 类

javascript - 轻松设置 react redux with next.js (React)

google-apps-script - 无法读取 null 的属性 'getSheetByName

python - 如何在输出文件中返回输入文件的第 k 个元素?

python - 从 Pandas 数据框中同一字段的所有其他行中减去一行字段中的值

r - 有没有办法根据名称自动执行 R 中列的乘法?

bash - 删除重复行立即忽略第一个字段

c# - Windows 窗体在没有文本框的情况下添加文本

reactjs - 类型 'onClick' 上不存在属性 '{ children?: ReactN

r - as.integer(8952) = 8951?