ลองใช้งาน Virtual Threads ใน Java 19

ใน Java 19 นั้น มีความสามารถที่น่าสนใจคือ JEP 425 : Virtual Threads ซึ่งอยู่ใน Project Loom นั่นเอง โดยยังเป็น feature preview อยู่

เป้าหมายของ Virtual Threads

  • ทำการ scale การทำงานของ thread ให้ทำงานร่วมกับ hardware ได้ดีขึ้น ลดการใช้ memory ลงไป
  • สามารถปรับการใช้งาน Thread API ได้ง่าย
  • ให้ง่ายต่อการแก้ไขปัญหา การ debug และ profiling ด้วย JDK tools

มาลองเขียน code เล่น ๆ กันหน่อย โดยทำการสร้าง 10 ล้าน thread มาเล่นหน่อย

import static java.lang.Thread.startVirtualThread;
	public class DemoThread {
	    public static final int THREAD_SIZE = 10_000_000;
	    public static void main(String[] args) throws Exception {
	        var threads = new ArrayList<Thread>(THREAD_SIZE);
	        for (int i =0; i < THREAD_SIZE; i++) {
	            var thread = startVirtualThread(() -> {});
	            threads.add(thread);
	        }
	        for (Thread thread : threads) {
	            thread.join();
	        }
	    }
	}

จากนั้นลอง run ด้วย Java 19 พบว่าทำงานได้ปกติ ไม่เกิด out of memory ใด ๆ และเร็วอีกด้วย !! น่าสนใจมาก ๆ สำหรับ feature นี้


0
203