현대의 컴퓨터는 멀티코어 프로세서를 기반으로 작동하며, 동시성(Concurrency)은 더 이상 선택이 아닌 필수적인 프로그래밍 패러다임이 되었습니다. Go 언어는 설계 초기부터 동시성을 핵심 기능으로 채택했으며, 전통적인 스레드-락(Thread-Lock) 모델의 복잡성을 해결하기 위한 명확한 철학을 제시합니다.
Posts for: #Concurrency
번역글: ExecutorService invokeAll 과 가상 스레드 사용하기
invokeAll
은 ExecutorService
의 메서드로, 여러 제출된 작업을 동시에 시작합니다. ExecutorService
는 스레드 풀에서 플랫폼 스레드를 사용하여 제출된 작업을 실행합니다. 이 비싸고 리소스 집약적인 플랫폼 스레드를 사용하는 대신, 가상 스레드를 사용하여 ExecutorService
에 제출된 작업을 실행할 수도 있습니다. 이 글에서는 invokeAll
메서드를 가상 스레드 (virtual threads), 구조화된 동시성 (structured concurrency) 및 플랫폼 스레드 (platform threads) 와 함께 구현하는 모든 방법을 다룰 것입니다.
번역글: Go의 동시성: 심층 분석
Go(종종 Golang으로 불림)는 처음부터 동시성을 염두에 두고 설계되었습니다. 이 언어는 고루틴, 채널 및 강력한 동시성 모델을 도입하여 다른 많은 언어에서 발견되는 전통적인 접근 방식에 비해 동시성 프로그램을 더 간단하고 직관적으로 작성할 수 있게 했습니다.
번역글: Java 스레드 성능 vs. 가상 스레드 vs. Kotlin 코루틴
면접 중에 한 면접관이 저에게 Java 스레드와 가상 스레드의 성능 차이에 대해 물었습니다. 저는 가상 스레드가 실제로는 JVM이 처리하는 경량 스레드이기 때문에 더 빠를 것이라고 답했지만, 둘 사이의 정확한 성능 차이가 궁금했습니다. 그래서 가상 스레드의 성능 향상을 확인하기 위해 간단한 벤치마크를 수행했습니다.