gpt4 book ai didi

java - `Thread.sleep` 与 Project Loom for Java 中的虚拟线程(纤程)不同吗

转载 作者:行者123 更新时间:2023-12-05 08:37:34 32 4
gpt4 key购买 nike

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

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

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

为了自学,我观看了一些 2020 年底的视频,其中包括 Oracle 的 Ron Pressler 介绍 Project Loom 技术(herehere)。虽然很有启发性,但我不记得他提到过 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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com