본문 바로가기
java

[Java21] Virtual Thread 요약

by moonsiri 2023. 5. 15.
728x90
반응형

Java 8 이후 세 번째 LTS버전인 Java 21이 2023년 9월에 릴리즈 예정인데, 이 버전에 Virtual Thread 기능이 추가될 예정입니다. (현재 Java 19에 Preview Features로 들어가 있음)

그래서 Virtual Thread 주제로 포스팅하려고 보니 이미 잘 정리되어 있는 포스팅이 많아서 요약정리만 하겠습니다.

 

  • 높은 처리량을 보장하는 Reactive Programming인 Spring Webflux는 Mono나 FLux와 같은 Publisher 타입으로 값을 래핑 해야 하기 때문에 코드 가독성이 좋지 않고, 고성능을 보장하더라도 유지보수가 어렵고 러닝커브가 존재합니다.
    • 최신 pinpoint 버전에서는 webflux도 지원하지만 이전 버전에서는 pinpoint로 안 잡힘
  • Virtual Thread를 사용하면 Non-blocking에 대한 처리를 JVM 레벨에서 담당하여 virtual thread pool을 사용하지 않습니다.
    • Blocking이 발생하면 내부적으로 스케줄링을 활용하여 platform thread가 대기하게 두지 않고 다른 virtual thread가 작업할 수 있도록 하여 Non-blocking이 누리는 장점을 동일하게 누릴 수 있음
  • 기존의 Thread(Platform Thread)와 Virtual Thread가 공존합니다.
    • Virtual Thread를 사용하더라도 응답속도가 빨라지진 않음 (처리량만 늘어날 듯)

 

 

[Reference]

https://openjdk.org/jeps/425

https://findstar.pe.kr/2023/04/17/java-virtual-threads-1/

https://www.baeldung.com/java-virtual-thread-vs-thread

https://theboreddev.com/understanding-java-virtual-threads/

https://www.infoworld.com/article/3678148/intro-to-virtual-threads-a-new-approach-to-java-concurrency.html

https://www.infoq.com/articles/java-virtual-threads/

https://blogs.oracle.com/javamagazine/post/java-loom-virtual-threads-platform-threads

728x90
반응형

댓글