Java 18中啟動Project Loom數百萬執行緒

banq發表於2022-06-26

微服務時代的現代,我們與太多的服務進行通訊以完成特定的工作。在這種情況下,執行緒大部分時間都處於阻塞狀態。雖然現代作業系統有時可以處理數百萬個開啟的套接字,但我們無法開啟許多通訊通道,因為我們受到執行緒數量的限制。如果我們可以建立數百萬個執行緒,並且每個執行緒都使用一個開放的套接字來處理外部通訊呢?這肯定會提高我們的應用程式吞吐量。 

為了實現這個想法,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

相關文章