Kotlin in action 2/e: 코루틴(1) 코루틴이란 무엇인가?

2026. 2. 23. 20:29·Kotlin

동시성 프로그래밍의 필요성

책에서는 다음과 같이 설명하며 나 또한 그렇다고 생각한다.

현대 프로그램들이 한 번에 한 가지 일만 하는 경우는 드물다...

 

이를 위해서는 특정 작업이 시작된 후 완료를 기다리지 않고 일단 다음 일을 하는 비동기(Asynchronous)가 필요하다고 할 수 있겠다. 

 

모든 작업을 물리적으로 함께 실행하지 않아도 동시성을 실현할 수 있다. 

운영체제와 관련하여 생각해본다면 위 문장에 대해 감이 올 것이라고 생각된다. 예를 들어 각 작업을 시분할 하고,  라운드로빈 방식으로 번갈아 실행한다면 싱글 코어 CPU 환경의 사용자 입장에서는 완전히 동시적으로 실행되는 것 처럼 보인다. 

 

진짜 물리적으로 동시에 작업을 수행하는 병렬성

현대에는 대부분의 CPU가 멀티코어이기 때문에 멀티코어 CPU를 이용하면 여러 계산들을 병렬적으로 수행할 수 있으며 이를 병렬성이라고 한다. 

 

코틀린에서의 동시성: 일시 중단 함수와 코루틴

코루틴은 코틀린의 강력한 특징 중 하나라고 책에서는 소개한다. 스레드와 같은 전통적인 방법과 비교했을 때, 코틀린이 훨씬 더 가볍게 동작한다고 한다. 

 

자바 스레드 vs 코루틴

JVM에서 병렬, 동시성 프로그래밍을 위한 고전적인 추상화는 스레드를 사용하는 것이다. 물론 코틀린도 이에 호환되기 때문에 자바에서처럼 스레드를 사용할 수 있게 다음과 같은 API를 제공한다고 한다.

import kotlin.concurrent.thread

fun main() {
println("I'm on ${Thread.currentThread().name}")
thread {
    println("And I'm on ${THread.currentThread().name}")
    }
}

 

JVM에서 생성하는 스레드는 일반적으로 OS 레벨 스레드이다.

시스템 스레드를 직접 사용하게 되면 생성하고 관리하는데 비용을 계속 지불해야하며, 어떤 스레드가 작업이 완료되길 기다리는 동안에는 그냥 블록되기 때문에 자원이 낭비된다. 

사실 이 부분은 스레드를 사용하면 어쩔 수 없이 감수해야 하는 부분이라고 생각했다, 그렇기 때문에 코루틴이 이를 어떻게 해결하려고 헀는지 더욱 궁금해졌다. 

 

 

 

 

'Kotlin' 카테고리의 다른 글

Closure란 무엇인가?  (0) 2026.05.06
[우테코 8기 모바일 안드로이드] 레벨 0 4주차 회고  (0) 2026.02.23
Kotlin in action 2/e: DSL 만들기(1) DSL이란 무엇인가?  (0) 2026.02.23
Kotlin in action 2/e: 어노테이션과 리플렉션(1) 코틀린의 어노테이션  (0) 2026.02.20
Kotlin in action 2/e: 고차함수: 람다를 파라미터와 반환값으로 사용(2) 인라인 함수, 코틀린 표준 라이브러리의 인라이닝  (0) 2026.02.19
'Kotlin' 카테고리의 다른 글
  • Closure란 무엇인가?
  • [우테코 8기 모바일 안드로이드] 레벨 0 4주차 회고
  • Kotlin in action 2/e: DSL 만들기(1) DSL이란 무엇인가?
  • Kotlin in action 2/e: 어노테이션과 리플렉션(1) 코틀린의 어노테이션
Kirbyyy
Kirbyyy
개인적인 일상과 회고를 기록하는 블로그입니다.
  • Kirbyyy
    커브볼의 생존일지
    Kirbyyy
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • 우아한테크코스 (8)
      • 프로덕트 빌드 (0)
      • Problem Solving (20)
      • C++ (0)
      • Kotlin (19)
      • Java (3)
      • CS (2)
        • AI (2)
      • 취미생활 (0)
        • 서평 (0)
        • 프라모델 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준 알고리즘
    ProblemSolving
    분할 정복
    백준 31575
    Problem Solving
    그리디 알고리즘
    백준 1356
    백준
    우테코 8기
    백준 연속 합
    BFS
    백준 16174
    백준 11123
    백준 RGB 거리
    다이나믹 프로그래밍
    너비 우선 탐색
    백준 파도반 수열
    백준 33272
    C++
    백준 16173
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Kirbyyy
Kotlin in action 2/e: 코루틴(1) 코루틴이란 무엇인가?
상단으로

티스토리툴바