Java 18中启动Project Loom数百万线程


在微服务时代的现代,我们与太多的服务进行通信以完成特定的工作。在这种情况下,线程大部分时间都处于阻塞状态。虽然现代操作系统有时可以处理数百万个打开的套接字,但我们无法打开许多通信通道,因为我们受到线程数量的限制。如果我们可以创建数百万个线程,并且每个线程都使用一个开放的套接字来处理外部通信呢?这肯定会提高我们的应用程序吞吐量。 

为了实现这个想法,Java 中正在进行一项名为 Project Loom 的计划。事实上,使用 Project Loom,我们可以创建数百万个虚拟线程。例如,使用下面的代码片段,我能够在我的机器上创建 450 万个线程,但你可以根据你的机器做更多的事情。  

import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.LockSupport;

public class Main {
    public static void main(String[] args) {
        var counter = new AtomicInteger();       

        // 4_576_279 
        while (true) {
            Thread.startVirtualThread(() -> {
                int count = counter.incrementAndGet();
                System.out.println(
"thread count = " + count);
                LockSupport.park();
            });
        }
    }
}


要运行此程序,您需要有 Java 18。 您可以使用以下命令运行: 

java --source 18 --enable-preview Main.java