CWN(CHANGE WITH NEWS) - OpenJDK 커뮤니티의 구조화 동시성 모델, 자바 멀티스레드 프로그래밍 개선 전망

  • 흐림해남12.5℃
  • 구름조금제주9.8℃
  • 흐림통영5.1℃
  • 구름많음고창군9.8℃
  • 흐림이천-0.1℃
  • 구름많음경주시-2.6℃
  • 흐림백령도1.6℃
  • 구름많음양산시4.5℃
  • 구름많음동해2.8℃
  • 구름많음의성-2.8℃
  • 흐림추풍령0.2℃
  • 구름많음속초2.9℃
  • 흐림동두천-1.5℃
  • 구름많음합천-1.2℃
  • 흐림대전2.5℃
  • 구름많음강릉2.6℃
  • 흐림보은0.9℃
  • 구름많음포항2.3℃
  • 구름많음구미-1.8℃
  • 흐림봉화-2.4℃
  • 구름많음대관령-0.9℃
  • 구름조금청송군-4.8℃
  • 흐림전주7.3℃
  • 구름많음거창-2.4℃
  • 구름많음산청-1.5℃
  • 흐림군산7.8℃
  • 흐림의령군-1.5℃
  • 흐림수원2.1℃
  • 구름많음태백2.2℃
  • 구름많음광주7.9℃
  • 흐림서산4.1℃
  • 구름많음서귀포15.0℃
  • 구름많음밀양1.2℃
  • 흐림보성군2.6℃
  • 구름많음진도군13.4℃
  • 흐림양평-0.2℃
  • 흐림완도5.2℃
  • 구름많음강진군3.2℃
  • 흐림청주2.0℃
  • 흐림순천0.2℃
  • 구름많음정읍8.6℃
  • 흐림부안9.0℃
  • 흐림춘천-2.4℃
  • 구름많음창원4.7℃
  • 흐림진주0.6℃
  • 흐림충주0.4℃
  • 흐림원주-0.8℃
  • 구름많음고산14.7℃
  • 구름많음남원2.6℃
  • 흐림울릉도5.2℃
  • 구름많음영천-1.6℃
  • 구름많음대구-0.9℃
  • 구름많음북창원5.1℃
  • 흐림천안1.9℃
  • 흐림강화0.2℃
  • 흐림거제4.7℃
  • 흐림영주-0.6℃
  • 구름많음울진3.0℃
  • 구름많음안동-0.2℃
  • 구름많음북강릉0.4℃
  • 구름많음목포8.0℃
  • 흐림서울1.2℃
  • 흐림홍성2.2℃
  • 흐림영월-1.6℃
  • 흐림광양시4.6℃
  • 흐림장수8.0℃
  • 흐림세종1.6℃
  • 구름많음김해시4.7℃
  • 구름많음영덕-0.4℃
  • 흐림고흥2.7℃
  • 흐림인제-2.5℃
  • 흐림문경1.3℃
  • 비북춘천-2.9℃
  • 흐림부여1.9℃
  • 구름많음북부산4.2℃
  • 흐림철원-3.2℃
  • 구름많음장흥2.0℃
  • 흐림여수5.5℃
  • 흐림금산1.8℃
  • 흐림상주1.0℃
  • 구름많음함양군-2.2℃
  • 흐림서청주0.8℃
  • 흐림파주-2.1℃
  • 흐림제천-0.9℃
  • 구름많음부산8.1℃
  • 흐림보령10.2℃
  • 흐림인천1.6℃
  • 구름많음영광군7.5℃
  • 흐림홍천-1.8℃
  • 흐림정선군-2.7℃
  • 흐림남해4.0℃
  • 구름조금흑산도12.6℃
  • 구름많음울산5.0℃
  • 흐림순창군2.3℃
  • 구름많음성산14.2℃
  • 구름많음임실5.7℃
  • 구름많음고창9.0℃
  • 2026.01.15 (목)

OpenJDK 커뮤니티의 구조화 동시성 모델, 자바 멀티스레드 프로그래밍 개선 전망

최정인 / 기사승인 : 2022-05-20 23:10:25
  • -
  • +
  • 인쇄
OpenJDK 커뮤니티에서 개발 중인 구조화 동시성 코딩을 이용하면 자바 스레드에서 동시에 실행되는 여러 개의 테스크를 하나의 유닛으로 처리할 수 있다.

IT전문 매체 인포월드가 오픈JDK 커뮤니티(OpenJDK community)의 지원 계획 덕분에 조만간 자바 개발자의 멀티스레드 프로그래밍이 한 층 더 수월해질 것이라고 보도했다.

오픈JDK 커뮤니티에서 개발 중인 구조화 동시성 모델은 다양한 스레드를 운영하는 여러 작업을 단일한 유닛으로 처리하는 라이브러리를 도입하고자 한다. 라이브러리는 에러 관리와 취소 간소화, 안정성 향상, 관측 능력 강화를 구현하고자 한다.

목표는 멀티스레드 코드의 안정성 및 관측 능력 향상, 취소 및 중단 과정에서 발생하는 보편적인 위험성을 제거할 동시 프로그래밍 강화이다.

구조화 동시성은 멀티스레드 코드를 단일 스레드 코드와 비슷한 가독성 및 유지 보수성을 갖게 하는 접근법이다. 하나의 태스크가 여러 개의 동시 실행 서브 태스크로 분리되면, 모든 태스크가 하나의 코드 블록으로 돌아온다. 자매 서브 태스크들은 같은 코드 블록 안에 존재하기 때문에 하나의 유닛으로 관리할 수 있다. 서브 태스크는 태스크를 위해 실행되며 태스크의 결과를 보고하고 오류가 발생하지 않는지 감시한다.

단일 스레드 코드를 이용하는 구조화된 프로그래밍과 비슷하게 구조화 동시성 코딩은 제대로 정의된 진입점 및 출구점이 있어 블록 실행이 매끄러워야 하며 작동 수명을 제대로 설계해야 한다.

구조화 동시성 코딩은 런타임 시 나무 모양의 계층을 가진 태스크를 구축해, 하나의 부모 태스크 아래에 자매 서브 태스크가 존재한다. 여기서 나무는 단일 스레드 코드에서의 콜스택(call stack)에 대응된다.

구조화 동시성은 JDK에서 제공하는 스레드의 가벼운 구현체인 가상 스레드에 적용하기에 좋다. 가상 스레드는 동일한 OS 스레드를 공유하여 다수의 가상 스레드 생성이 가능하다. 이들은 동시에 실행되는 하나의 유닛처럼 행동할 수 있어, I/O와 비슷하게 작동하기도 한다. 서버 애플리케이션은 구조화 동시성을 이용하여 수백만 개의 리퀘스트를 동시에 처리할 수도 있다.

결국, 가상 스레드는 다수의 스레드를 가져올 수 있게 해주며 구조화 동시성은 이들 스레드에 질서를 부여한다. JDK에 구조화 동시성을 위한 라이브러리가 생기면 서버 관리 개발자들은 코드의 정비성과 신뢰도를 확보할 수 있다.

다만, 이번 모델은 java.util.concurrent의 동시성 구조체를 대체하거나 자바를 위한 완벽한 API를 제공하는 것은 아니다. 또한 스레드 간 데이터를 공유하기 위한 메커니즘을 만드는 것도 아니며 이미 존재하는 스레드 일시 중지 메커니즘도 유지할 것으로 보인다.

한편, 구조화 동시성 모델이 어느 버전을 지원할 것인지는 확실히 알려진 바 없다.

[저작권자ⓒ CWN(CHANGE WITH NEWS). 무단전재-재배포 금지]

최신기사

뉴스댓글 >

- 띄어 쓰기를 포함하여 250자 이내로 써주세요.
- 건전한 토론문화를 위해, 타인에게 불쾌감을 주는 욕설/비방/허위/명예훼손/도배 등의 댓글은 표시가 제한됩니다.

댓글 0

Today

Hot Issue