Virtual threads v Java 21 umožňují miliony concurrent threads bez overhead platformních threadů.
Virtual threads¶
// Vytvoření virtual thread Thread.startVirtualThread(() -> { var result = fetchFromDB(); process(result); }); // ExecutorService s virtual threads try (var executor = Executors.newVirtualThreadPerTaskExecutor()) { List> futures = urls.stream() .map(url -> executor.submit(() -> fetch(url))) .toList(); for (var future : futures) { System.out.println(future.get()); } }
Spring Boot integrace¶
application.properties¶
spring.threads.virtual.enabled=true
Všechny request handlery běží na virtual threads!¶
Kdy použít¶
- I/O-bound operace (HTTP, DB, file)
- Vysoký počet concurrent requestů
- NE pro CPU-bound operace
- NE pro synchronized bloky (pinning)
Klíčový takeaway¶
Virtual threads = miliony concurrent threads. spring.threads.virtual.enabled=true a hotovo. Pozor na synchronized.