* 코루틴(Coroutines) : 코틀린에서 제공하는 기능으로 비동기 작업을 효율적으로 처리하기 위해 설계된 경량화된 동시성 처리 방식
- 작업을 일시 중단(suspend)하고 나중에 재개할 수 있으며 매우 적은 자원을 사용
- I/O작업이 많은 시스템에서 특히 효과적
- 협력적 멀티태스킹을 지원하여 코루틴 자체가 자발적으로 작업을 일시 중단하고 다른 작업에 CPU점유를 넘김
| 스레드 | 코루틴 | |
| 메모리 사용량 차이 | 자체 스택 메모리를 필요로 함 JVM에서 기본적으로 1MB 스택 할당 스레스 생성 ~ 종료될때까지 유지 |
스레드 내에서 실행 자체 스택 X |
| 컨텍스트 스위칭 비용 | OS수준 CPU 레지스터, 메모리 맵 등의 상태를 저장하고 복원하는 비용 발생 |
코루틴 간 전환은 OS개입 없이 사용자 공간(user space)에서 발생 실행 지점, 로컬 변수 상태만 heap 메모리에 저장 |
| 생성 및 관리 비용 | 커널 수준 리소스 활용 | 단순 객체 할당과 유사, OS리소스 직접 소비 X |
| 일시 중단 메커니즘 | 블로킹 작업(I/O 등) 중에는 완전히 차단 | 일시 중단 지점(suspend) : 기본 스레드 해제 수 천개의 코루틴을 소수의 스레드에서 효율적으로 실행 가능 |
* 버추얼 스레드(Virtual Thread) : 자바 진영에서 도입된 기술로 기존의 스레드 모델을 경량화한 형태
- JVM레벨에서 관리, OS의 스레드보다 훨씬 가벼움
- 수십만 개의 스레드를 생성
- I/O작업 시 효율적으로 대기 상태에 들어가 시스템 자원을 적게 소보
- 기존 자바 코드와 동일한 API를 사용해서 기존 코드에 큰 수정 없이 적용 가능
'cs(with 매일메일)' 카테고리의 다른 글
| [260323월] 레이어드 아키텍처란 무엇인가요? (0) | 2026.04.06 |
|---|---|
| [260320금] 싱글턴 패턴이란 무엇인가요? (0) | 2026.04.06 |
| [260318수] 쿠키와 세션의 차이에 대해서 설명해주세요 (1) | 2026.04.06 |
| [250313금] 참조 지역성의 원리란 무엇인가요? (0) | 2026.03.16 |
| [260312목] 이벤트 소싱이란 무엇인가요? (0) | 2026.03.12 |