我试图在Java中测试虚拟线程引用织机项目,并使用以下JDK 19-loom版本:

package com;
import java.util.concurrent.ThreadFactory;
public class a {
public static void main (String [] args) throws Exception{
Runnable printThread = () -> System.out.println(Thread.currentThread());
ThreadFactory virtualThreadFactory = Thread.builder().virtual().factory();
ThreadFactory kernelThreadFactory = Thread.builder().factory();
Thread virtualThread = virtualThreadFactory.newThread(printThread);
Thread kernelThread = kernelThreadFactory.newThread(printThread);
virtualThread.start();
kernelThread.start();
}
}我有以下IntelliJ配置:

但我有以下错误:

并且线程的生成器似乎没有被识别出来。

,我想知道我还需要什么?
发布于 2022-02-11 13:51:08
你用的是一个过时的例子。
在织机的当前状态下,您的示例必须如下所示
public static void main(String[] args) throws InterruptedException {
Runnable printThread = () -> System.out.println(Thread.currentThread());
ThreadFactory virtualThreadFactory = Thread.ofVirtual().factory();
ThreadFactory kernelThreadFactory = Thread.ofPlatform().factory();
Thread virtualThread = virtualThreadFactory.newThread(printThread);
Thread kernelThread = kernelThreadFactory.newThread(printThread);
virtualThread.start();
kernelThread.start();
virtualThread.join();
kernelThread.join();
}但是您也可以使用简化的
public static void main(String[] args) throws InterruptedException {
Runnable printThread = () -> System.out.println(Thread.currentThread());
Thread virtualThread = Thread.startVirtualThread(printThread);
Thread kernelThread = Thread.ofPlatform().start(printThread);
virtualThread.join();
kernelThread.join();
}请记住,这是正在进行的工作,文档可能很快就会过时。
https://stackoverflow.com/questions/70932952
复制相似问题