Offcanvas

개발자

“자바에 가상 스레드 가져온다”··· 새 오픈JDK 제안

2021.11.18 Paul Krill  |  InfoWorld
하드웨어 자원을 효율적으로 사용하는 한편, 동시 프로그래밍을 훨씬 더 쉽게 만드는 것을 목표로 하는 새로운 개발 제안이 오픈JDK 커뮤니티에 제출됐다. 

처리량이 많은 동시 애플리케이션을 작성, 유지관리, 모니터링하는 데 필요한 리소스를 ‘크게’ 줄이기 위한 자바용 가상 스레드가 제안됐다. 
 
ⓒGetty Images

지난 11월 15일 게시된 오라클의 JEP 초안은 자바 표준 버전의 일부로 가상 스레드를 제안했다(프리뷰). 가상 스레드는 운영체제(OS) 스레드를 나타내는 자바의 플랫폼 스레드를 경량의 사용자-모드 스레드 구현으로 보완하여, 하드웨어를 효율적으로 사용하고 비용을 대폭 절감하고자 한다. 

해당 제안서에 따르면 스레드는 트랜잭션 등의 동시성 단위를 나타내는 데 유용하다. 하지만 현재 자바의 스레드 구현은 각 자바 스레드에 OS 스레드를 사용하는데, OS 스레드는 (소켓보다) 희소하고, 비용도 많이 든다. 이는 최신 서버가 OS 스레드보다 훨씬 더 많은 동시 트랜잭션을 처리할 수 있다는 의미라고 개발팀은 설명했다. 

처리량이 많은 서버 소프트웨어를 작성하는 개발자는 하드웨어를 (낭비하지 않고) 효율적으로 사용해야 했고, 따라서 트랜잭션 간에 스레드를 공유해야 했다. 

이 작업은 각 트랜잭션에서 새 스레드 생성 비용을 절감하기 위해 다른 트랜잭션에 스레드를 대여하는 스레드 풀을 사용하여 수행됐다. 이것으로 충분하지 않다면  개발자는 I/O를 대기하는 트랜잭션 중간에도 스레드를 풀에 반환했다. 

그 결과, 별도의 호환되지 않는 API 집합을 필요로 하는 비동기식 프로그래밍 방식이 생성되고, 문제 해결, 디버깅, 모니터링 및 프로파일링도 어려워진다.

가상 스레드는 OS 스레드를 차단하지 않는 java.lang.Thread의 사용자-모드 구현으로, 최적에 가까운 하드웨어 활용을 지원한다. 또한 이는 높은 처리량과 높은 수준의 동시성을 허용하며, 해당 프로그램은 자바 플랫폼 및 도구의 스레드 기반 설계와 호환된다.  

한편 제안서는 가상 스레드를 사용하기 위해 새로운 프로그래밍 모델을 배울 필요가 없다고 전했다. 오늘날 자바를 사용하여 동시 애플리케이션을 작성하는 개발자라면 누구나 이 모델을 이미 알고 있으며, 자바의 기존 프로그래밍 모델과 거의 동일하다는 설명이다. 

가상 스레드는 많은 활성 인스턴스가 동일한 프로세스에서 공존할 수 있도록 하는 방식으로 JDK에 의해 구현된 java.lang.Thread  인스턴스다. 자바 코드와 관련해 가상 스레드의 의미는 단일 스레드 그룹(ThreadGroup)에 속하고 열거할 수 없다는 점을 제외하면 플랫폼 스레드의 의미와 동일하다. 

오라클 기술팀의 컨설팅 멤버 론 프레슬러와 앨런 베이트먼이 작성한 이 제안서는 가상 스레드를 지원할 표준 자바 릴리즈를 명시하진 않았다. 현재 자바 릴리즈는 지난 9월 공개된 ‘JDK 17’이다. ciokr@idg.co.kr

 
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
Sponsored
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.