问题标签 [project-loom]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
72 浏览

java - 在 IDEA 上运行 loom 演示

我想运行 loom 的演示,我从http://jdk.java.net/loom/下载了 jdk18-loom ,并下载了最新版本IDEA

在此处输入图像描述

无论我选择X还是17-preview,程序都无法运行,报告: Executors.newVirtualThreadPerTaskExecutor() Is an API in a preview feature

如何解决?</p>

0 投票
2 回答
80 浏览

java - 如何在 sdkman 中设置自定义 JDK 构建?

通过从http://jdk.java.net/loom/下载文件,解压缩它(我有一个名为 的目录jdk-18),将JAVA_HOMEenv var 设置为jdk-18目录,并将bin构建的子目录添加到我的PATHenv var 的开头。我能够使用构建来编译和运行使用虚拟线程预览功能的 Java 程序。

但这感觉像是一个非常手动的过程。我喜欢 SDKMAN 如何在我的系统上管理 JDK。如何将此早期访问版本(或任何其他 JDK 版本)设置为 SDKMAN 管理的 JDK 列表中的条目,以便我可以更改它,例如,通过键入sdk default java <my-jdk-18-name>

0 投票
1 回答
243 浏览

java - 虚拟线程如何映射到实际线程

如前所述,虚拟线程最终会映射到实际线程。假设创建了 100 万个虚拟线程。在 8 核处理器中,我假设将有 8 个内核线程。所以,我的问题是

  1. 100 万个虚拟线程如何映射到 8 个内核线程?这背后的算法是什么?
  2. 为什么阻塞在虚拟线程中很便宜?据我了解,这是因为它不会阻塞运营商(内核)线程。但是内核线程使用上下文切换,为什么它仍然很便宜?
  3. 虚拟线程是否适合代码需要调用本机方法的用例(public native String getSystemTime();)
0 投票
1 回答
82 浏览

java - Java结构化并发

结构化并发:

一个简单的原则,即当执行流分成多个并发流时,它们会在同一个代码块中重新加入。

资源

基于此,假设我有如下内容:

问题 1: 我创建了一个新的子线程(TaskDeligatorThread),但没有在同一个代码块中完成/结束/重新加入,即方法delegateTask() - 这是否意味着它不遵循结构化并发原则?

问题 2: 可能存在 Thread1 想要将某些任务委托给子线程(Thread1 将创建)而 Thread1 不需要等待子线程的输出/完成的情况。在这种情况下,我再次不会在创建子线程的代码块中完成/结束/重新加入子线程。在这种情况下,我将如何遵循结构化并发?

0 投票
1 回答
74 浏览

java - 尝试将 Project Loom/虚拟线程与 OpenJDK 19-loom JAVA 一起使用时出现问题

我正在尝试在 Java 中测试虚拟线程参考 loom 项目,并且我正在使用以下 JDK 19-loom 版本:

在此处输入图像描述

我有以下 IntelliJ 配置:

在此处输入图像描述

但我有以下错误:

在此处输入图像描述

而且似乎没有确定线程的构建者

在此处输入图像描述

我想知道我还需要什么?