Language/Kotlin 5

멀티스레드 vs 버추얼 스레드 vs 코루틴: 실패와 중지 처리는 어떻게 다를까?

동시성과 병렬성을 구현할 때 스레드나 코루틴을 사용할 수 있지만, 실무에서는 단순 실행만큼 중요한 것이 있습니다.바로 작업 도중 실패했을 때 어떻게 중단하고 복구할 수 있느냐입니다.이 글에서는 Java의 전통적인 멀티스레드, Java 21의 버추얼 스레드, 그리고 Kotlin의 코루틴에서 **실패 처리(예외 처리, 중단, 롤백)**를 어떻게 다루는지 구조적으로 비교합니다.✅ 1. 전통 멀티스레드의 실패 처리특징OS 레벨 스레드중단: Thread.interrupt() 호출 → 내부에서 체크해야 함실패 처리: try-catch 사용, 직접 제어 필요자동 롤백 없음 (DB 트랜잭션, 상태 복구는 별도로 구현)예시Thread t = new Thread(() -> { try { for (int ..

Language/Kotlin 2025.07.14

Kotlin 코루틴은 멀티스레드 안에서 비동기 처리가 되는 걸까

코루틴을 처음 접할 때 가장 흔히 드는 의문 중 하나는 다음과 같습니다.“멀티스레드 위에서 비동기로 실행된다면, 결국 그냥 멀티스레드 아닌가?”“멀티스레드, 코루틴, 버추얼 스레드 각각은 어떻게 다르고 언제 써야 하지?”이 글에서는 Kotlin의 코루틴이 멀티스레드 환경에서 어떻게 비동기 처리를 수행하는지, 그리고 전통적인 멀티스레드나 Java의 버추얼 스레드와 어떤 차이가 있는지를 실무적인 관점에서 입체적으로 정리합니다.✅ 코루틴의 등장 배경: 왜 필요했을까?Java의 전통적인 멀티스레드는 다음과 같은 한계가 있습니다.스레드 하나당 약 1MB의 메모리 소비컨텍스트 스위칭 비용이 큼 (OS가 직접 관리)수천 개 이상의 동시 작업 처리 시 리소스 한계이런 제약을 극복하기 위해 등장한 것이 경량 스레드(Li..

Language/Kotlin 2025.07.14

Kotlin/Java 컬렉션 구조 비교: Stack vs Queue vs ArrayDeque

스택과 큐는 모든 프로그래머가 한 번쯤은 접해보는 대표적인 선형 자료구조입니다. Java 및 Kotlin에서도 다양한 구현체가 제공되지만, 실제로 어떤 자료구조를 써야 할지 헷갈릴 수 있습니다. 특히 Stack, Queue, ArrayDeque는 모두 삽입/삭제 연산을 제공하면서도 구조와 성능, 사용 목적이 다르기 때문에 정확한 이해가 필요합니다.이 글에서는 각 자료구조의 특징과 차이점을 비교하고, 어떤 상황에 어떤 자료구조를 선택해야 하는지 실용적인 가이드를 제공합니다.기본 개념 요약Stack (스택)LIFO (Last In, First Out) 구조가장 나중에 삽입된 요소가 가장 먼저 제거됨Java의 Stack 클래스는 Vector를 상속 → 동기화 처리됨 (synchronized)Kotlin에서도 ..

Language/Kotlin 2025.07.07

Kotlin Coroutine 핵심 키워드 & 함수 정리

✅ 1. 키워드(예약어)키워드설명suspend일시 중단 가능한 함수 정의. 코루틴 내부에서만 호출 가능* “이 함수는 중간에 멈췄다가, 나중에 다시 이어서 실행할 수 있어” 라고 선언하는 것.✅ 2. 코루틴 빌더 함수함수설명runBlocking현재 스레드를 블로킹하며 코루틴 실행 (main/test 진입점에 사용)launch결과 없이 코루틴 실행. fire-and-forget 작업에 적합asyncDeferred 결과 반환. await()으로 값 획득 가능✅ 3. 스코프 관련 함수함수설명coroutineScope모든 하위 코루틴이 끝날 때까지 기다림. 예외 전파됨supervisorScope하위 코루틴 예외가 다른 코루틴에 영향을 주지 않음CoroutineScope코루틴 실행 환경(Context)을 정의하는..

Language/Kotlin 2025.06.06

[1] 왜 코루틴을 써야 할까? – Kotlin이 선택한 비동기 방식

Coroutine Document Coroutines | Kotlin kotlinlang.orghttps://github.com/Raconer/kotlin_study/tree/main/src/main/kotlin/coroutine kotlin_study/src/main/kotlin/coroutine at main · Raconer/kotlin_studyContribute to Raconer/kotlin_study development by creating an account on GitHub.github.com Kotlin 코루틴은 비동기 코드를 동기처럼 깔끔하게 작성할 수 있도록 도와주는 경량 스레드 기반의 논블로킹 구조입니다.✅ 코루틴이란?실행을 중단(suspend) 했다가 다시 재개(resume) ..

Language/Kotlin 2025.06.06