반응형

Kotlin 221

코틀린 테스트 설정

코틀린에서의 테스트 설정은 테스트 환경을 구성하고, 테스트 실행에 필요한 설정을 정의하는 과정을 의미합니다. 테스트 설정은 테스트의 격리성과 신뢰성을 보장하고, 반복 가능한 테스트 환경을 제공하는 데 중요한 역할을 합니다. 아래는 주로 사용되는 테스트 설정과 관련된 개념들에 대한 설명입니다. JUnit 5에서의 테스트 설정 JUnit 5에서는 @BeforeEach, @BeforeAll, @AfterEach, @AfterAll 어노테이션을 사용하여 각각 테스트 메서드, 클래스의 모든 테스트 메서드, 테스트 메서드 실행 후, 클래스의 모든 테스트 메서드 실행 후에 실행될 코드 블록을 정의할 수 있습니다. import org.junit.jupiter.api.BeforeEach import org.junit.j..

Kotlin/포스팅 2024.01.10

코틀린 픽스처 제공

코틀린에서 픽스처는 테스트를 실행하기 전에 필요한 상태나 리소스를 설정하는데 사용됩니다. 여러 테스트 케이스에서 공통적으로 사용되는 초기화 코드나 설정을 픽스처로 정의하고, 각 테스트 케이스에서 이를 활용하여 테스트를 수행할 수 있습니다. 다음은 코틀린에서 픽스처를 제공하는 일반적인 패턴과 예제입니다. 1. @BeforeEach 및 @AfterEach 어노테이션 사용 JUnit 5에서는 @BeforeEach와 @AfterEach 어노테이션을 사용하여 각각 테스트 메소드 실행 전/후에 초기화 및 정리 작업을 수행할 수 있습니다. import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.AfterEach import org.junit.jupi..

Kotlin/포스팅 2024.01.10

코틀린 픽스처와 설정

코틀린에서 픽스처(Fixture)와 설정(Configuration)은 테스트 환경을 구성하고 테스트 실행에 필요한 리소스를 제공하는데 사용됩니다. 이러한 개념들은 테스트의 격리, 반복성, 유지보수성을 높이고, 테스트의 신뢰성을 확보하는 데에 도움을 줍니다. 코틀린에서의 픽스처(Fixture) 픽스처는 테스트를 실행하기 전에 필요한 상태나 자원을 설정하는 데 사용됩니다. 일반적으로 테스트가 실행되기 전에 픽스처를 설정하고, 테스트 종료 후에는 픽스처를 정리하는 역할을 합니다. 예를 들어, 데이터베이스 테스트에서는 데이터베이스 연결을 설정하고, 필요한 테스트 데이터를 삽입한 후 테스트를 실행하고, 테스트가 완료된 후에는 데이터베이스 연결을 닫는 등의 작업이 픽스처로 이루어질 수 있습니다. import org..

Kotlin/포스팅 2024.01.10

코테스트 속성 기반 테스트

코테스트에서의 속성 기반 테스트(Property-based testing)는 입력 값의 속성을 정의하고, 이를 기반으로 여러 입력 값에 대해 테스트를 실행하는 방법입니다. 속성 기반 테스트는 여러 경계 조건을 확인하고 예상치 못한 경우를 탐지하는 데 유용합니다. 코테스트에서는 Kotest Property Testing 모듈을 사용하여 속성 기반 테스트를 작성할 수 있습니다. 아래는 간단한 속성 기반 테스트를 설명하는 예제입니다. 1. 속성 기반 테스트 예제 import io.kotest.core.spec.style.StringSpec import io.kotest.property.Arb import io.kotest.property.arbitrary.int import io.kotest.property...

Kotlin/포스팅 2024.01.10

코테스트 비결정적 코드

코테스트에서 "비결정적 코드"는 각 실행에서 다른 결과를 가지는 코드를 나타냅니다. 이는 주로 난수 생성, 외부 API 호출, 시간에 따른 변화 등과 관련이 있습니다. 즉, 동일한 입력이 주어져도 각 실행에서 예측할 수 없는 결과를 반환하는 코드입니다. 코테스트에서는 비결정적 코드에 대한 테스트를 작성하기 위한 다양한 방법을 제공합니다. 1. Seed를 이용한 난수 제어 난수 생성이 포함된 코드를 테스트할 때, 각 실행에서 동일한 시퀀스의 난수를 얻을 수 있도록 seed를 고정하는 방법이 있습니다. import io.kotest.core.spec.style.StringSpec import io.kotest.matchers.shouldBe import kotlin.random.Random class Non..

Kotlin/포스팅 2024.01.10

코테스트 예외 처리

Kotest에서 예외 처리는 테스트 코드에서 예외를 기대하고, 예외가 발생했을 때 테스트를 성공 또는 실패로 처리하는 과정을 의미합니다. Kotest는 테스트 케이스에서 예외를 처리하는 다양한 방법을 제공합니다. 1. 예외 발생 여부 확인 Kotest에서는 shouldThrow 함수를 사용하여 어떤 블록이 예외를 발생시켜야 하는지를 확인할 수 있습니다. import io.kotest.core.spec.style.StringSpec import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldThrow class ExceptionHandlingTest : StringSpec({ "should throw ArithmeticException" { va..

Kotlin/포스팅 2024.01.10

코테스트 인스펙터

Kotest는 테스트 코드를 작성할 때 사용되는 코틀린 기반의 테스트 프레임워크 중 하나입니다. Kotest에는 인스펙터(Inspector) 기능이 내장되어 있어 테스트 코드의 품질을 향상시키고 유지보수성을 높이는 데 도움을 줍니다. Kotest 인스펙터는 다양한 검사 규칙을 적용하여 테스트 코드를 분석하고 품질에 관한 권장 사항을 제시합니다. 아래에서는 Kotest 인스펙터의 주요 특징에 대해 알아보겠습니다. 1. 테스트 이름 패턴 규칙 Kotest 인스펙터는 테스트 함수의 이름에 대한 규칙을 적용하여 일관성 있는 네이밍을 유지하도록 도와줍니다. 테스트 이름이 특정 패턴을 따르지 않는 경우에는 권장 사항을 제시합니다. 2. 중복된 테스트 발견 인스펙터는 중복된 테스트를 감지하고 제거하도록 권고합니다. ..

Kotlin/포스팅 2024.01.10

코틀린 인스펙터

코틀린 인스펙터(Inspector)는 IntelliJ IDEA에서 제공하는 도구 중 하나로, 코드의 품질을 향상시키고 개선할 수 있도록 도와주는 기능입니다. 인스펙터는 코드에 대한 정적 분석을 수행하고 코드 스타일, 잠재적인 오류, 최적화 등에 관한 권장 사항을 제공합니다. 여기서는 IntelliJ IDEA에서 제공하는 주요 코틀린 인스펙터 기능에 대해 알아보겠습니다. 1. 코드 스타일 규칙 검사 인스펙터는 코드 스타일에 관한 다양한 규칙을 적용하여 코드를 검사합니다. 예를 들어, 변수 이름의 소문자 사용, 코드 들여쓰기, 중괄호 사용, 불필요한 빈 줄 등의 사항들을 확인하여 권장 사항을 제공합니다. 2. 잠재적인 오류 감지 인스펙터는 코드를 정적으로 분석하여 잠재적인 오류를 감지합니다. 이는 변수가 초..

Kotlin/포스팅 2024.01.10

코틀린 매처

코틀린의 매처(Matcher)는 주로 테스트 코드에서 예상한 결과와 실제 결과를 비교하는 데 사용됩니다. 여러 테스트 프레임워크와 라이브러리에서 매처를 제공하며, 일반적으로 should 함수와 함께 사용되어 테스트 조건을 표현하는 데 유용합니다. 매처를 사용하면 테스트 코드가 더 가독성이 좋고 표현력이 풍부해집니다. 아래에서는 코틀린에서 매처를 사용하는 기본적인 방법과 몇 가지 흔한 매처들을 살펴보겠습니다. Kotest 매처 Kotest에서는 Matchers 클래스를 통해 다양한 매처들을 제공합니다. import io.kotest.matchers.shouldBe val a = 5 val b = 10 a shouldBe 5 b shouldNotBe 5 a should beLessThan(b) a shoul..

Kotlin/포스팅 2024.01.10

코틀린 단언문

코틀린에서의 단언문은 특정 조건이나 상태가 참임을 명시적으로 검사하는 데 사용됩니다. 주로 테스트 코드에서나 디버깅 중에 사용되며, 코드가 예상대로 동작하는지 확인하는 데 유용합니다. 코틀린에서는 주로 assert 함수를 사용하여 단언문을 작성합니다. assert 함수는 주어진 조건이 true인지 확인하고, 조건이 false인 경우 예외를 발생시켜 프로그램을 중단시킵니다. 기본적인 assert 함수 사용 fun divide(a: Int, b: Int): Int { assert(b != 0) { "Divisor cannot be zero" } return a / b } fun main() { println(divide(10, 2)) // 출력: 5 println(divide(8, 0)) // Asserti..

Kotlin/포스팅 2024.01.10

코틀린 코테스트 명세 스타일

Kotest에서는 다양한 명세 스타일을 제공하여 테스트 코드를 더 읽기 쉽고 유지보수하기 쉽게 작성할 수 있도록 도와줍니다. 아래에서 주요한 Kotest 명세 스타일에 대해 알아보겠습니다. 1. FunSpec 스타일 FunSpec 스타일은 함수 수준의 테스트를 작성할 때 사용됩니다. 각 테스트는 독립적인 함수로 정의되며, 테스트 그룹은 describe 함수를 사용하여 생성됩니다. import io.kotest.core.spec.style.FunSpec import io.kotest.matchers.shouldBe class MyFunSpec : FunSpec({ describe("String manipulation") { it("should have a length of 5") { "hello".leng..

Kotlin/포스팅 2024.01.10

코틀린 코테스트 명세

Kotest는 코틀린에서 사용할 수 있는 강력하고 유연한 테스팅 프레임워크 중 하나입니다. Kotest는 다양한 기능과 확장 가능성을 제공하여 테스트 코드 작성 및 실행을 용이하게 합니다. 이 프레임워크의 핵심 개념 중 하나는 "명세"입니다. Kotest 명세(Spec) 작성 Kotest에서 명세는 Spec 클래스를 상속하여 작성됩니다. 명세는 테스트의 계층 구조를 형성하고, 각 테스트를 정의하고 실행하는 데 사용됩니다. import io.kotest.core.spec.style.DescribeSpec import io.kotest.matchers.shouldBe class MySpec : DescribeSpec({ describe("String manipulation") { it("should have..

Kotlin/포스팅 2024.01.10

코틀린 테스팅

코틀린에서는 테스팅을 위해 다양한 도구와 프레임워크를 사용할 수 있습니다. 가장 널리 사용되는 테스팅 프레임워크 중 하나는 JUnit입니다. 아래에서는 코틀린에서의 테스팅에 대해 알아보겠습니다. JUnit을 사용한 테스트 JUnit은 Java에서 시작된 테스팅 프레임워크이며, 코틀린에서도 쉽게 사용할 수 있습니다. 코틀린 코드와 함께 JUnit을 사용하는 기본적인 예제는 다음과 같습니다. import org.junit.jupiter.api.Test import org.junit.jupiter.api.Assertions.* class MyTest { @Test fun testAddition() { val result = 1 + 2 assertEquals(3, result) } @Test fun testSu..

Kotlin/포스팅 2024.01.10

코틀린 동기화와 락

동기화와 락은 다중 스레드 환경에서 공유된 자원에 대한 안전한 접근을 보장하기 위한 기술입니다. 여러 스레드가 동시에 접근할 때 발생할 수 있는 경쟁 조건과 데이터 불일치 문제를 해결하기 위해 사용됩니다. 코틀린에서는 동기화와 락을 사용하여 스레드 간의 안전한 동시 접근을 보장할 수 있습니다. 1. 동기화 (Synchronization) 동기화는 여러 스레드가 동시에 공유된 자원에 접근하는 것을 제어하여 안전한 실행을 보장하는 메커니즘입니다. 코틀린에서는 synchronized 키워드를 통해 메소드 또는 블록을 동기화할 수 있습니다. 메소드 동기화 class Counter { private var count = 0 @Synchronized fun increment() { count++ } @Synchro..

Kotlin/포스팅 2024.01.10

코틀린 자바 동시성 사용

코틀린과 자바는 JVM 기반의 언어로, 동시성과 병렬 프로그래밍을 위한 다양한 라이브러리와 기능을 제공합니다. 이 두 언어 간의 동시성 사용 방법에는 몇 가지 차이가 있지만, 기본적인 개념과 라이브러리는 서로 유사합니다. 아래에서는 코틀린과 자바에서의 동시성 사용에 대해 알아보겠습니다. 1. 코틀린에서의 동시성 코루틴과 비동기 프로그래밍 코틀린에서는 코루틴을 활용하여 비동기 프로그래밍을 쉽게 수행할 수 있습니다. launch, async, await 등의 키워드를 사용하여 코루틴을 생성하고 실행하며, Deferred와 같은 개념을 사용하여 비동기 작업의 결과를 다룰 수 있습니다. import kotlinx.coroutines.* fun main() = runBlocking { val result = wi..

Kotlin/포스팅 2024.01.10

코틀린 액터

코틀린 액터(Actor)는 동시성 프로그래밍에서 메시지 전달을 통해 통신하는 경량의 프로세스를 나타내는 개념입니다. 각 액터는 독립적으로 실행되며, 다른 액터와 메시지를 주고받아 상태를 변경하거나 작업을 수행합니다. 액터는 고루틴을 기반으로 하며, 메시지 처리는 비동기적으로 이루어집니다. 코틀린에서는 actor 빌더를 사용하여 액터를 생성할 수 있습니다. 액터는 Channel을 사용하여 메시지를 주고받습니다. 1. 기본적인 액터 예제 import kotlinx.coroutines.* import kotlinx.coroutines.channels.actor sealed class Message data class Greet(val name: String) : Message() data class Thank..

Kotlin/포스팅 2024.01.10

코틀린 티커

코틀린에서 티커(Ticker)는 일정 간격으로 특정 작업을 반복적으로 실행하는 기능을 지원하는 라이브러리 또는 패턴을 의미할 수 있습니다. 티커는 특정 주기나 조건에 따라 코드를 주기적으로 실행할 때 유용합니다. 1. 코루틴을 이용한 티커 코틀린에서는 launch 함수를 사용하여 코루틴을 만들고, delay 함수를 사용하여 일정 시간 동안 대기할 수 있습니다. 이를 활용하여 티커를 구현할 수 있습니다. import kotlinx.coroutines.* fun main() = runBlocking { launch { repeat(5) { delay(1000) // 1초마다 작업 실행 println("Tick") } } // 다른 비동기 작업 수행 가능 delay(6000) } 위의 예제에서는 1초마다 "T..

Kotlin/포스팅 2024.01.10

코틀린 동시성 생산자

생산자(Producer)는 데이터를 생성하고 제공하는 역할을 수행하는 개체 또는 기능입니다. 동시성 환경에서는 여러 생산자가 동시에 실행되며, 이들이 안전하게 데이터를 생성하고 소비자와 공유하는 것이 중요합니다. 코틀린에서는 코루틴과 동시성 관련 기능을 사용하여 생산자를 작성할 수 있습니다. 1. 코루틴을 활용한 생산자 코루틴을 사용하면 비동기적이고 동시성을 가진 코드를 작성할 수 있습니다. 생산자는 produce 빌더 함수를 사용하여 생성됩니다. import kotlinx.coroutines.* import kotlinx.coroutines.channels.* fun CoroutineScope.producer(): ReceiveChannel = produce { for (i in 1..5) { dela..

Kotlin/포스팅 2024.01.10

코틀린 동시성 채널

코틀린에서의 동시성 채널은 여러 코루틴 간에 안전하게 데이터를 교환하고 동기화하는 메커니즘을 제공합니다. 이는 생산자-소비자 패턴을 기반으로 하며, Channel 클래스를 통해 구현됩니다. 1. Channel 생성 및 사용 채널은 Channel() 함수를 사용하여 생성할 수 있습니다. import kotlinx.coroutines.* import kotlinx.coroutines.channels.Channel fun main() = runBlocking { val channel = Channel() launch { for (x in 1..5) { channel.send(x * x) } channel.close() } repeat(5) { println(channel.receive()) } } 위의 예제에..

Kotlin/포스팅 2024.01.10

코틀린 동시성 통신

코틀린에서 동시성 통신은 여러 코루틴 또는 스레드 간에 정보를 교환하고 동기화하는 프로세스를 의미합니다. 다수의 동시적 실행 흐름이 동일한 자원에 접근할 때 동기화가 필요하며, 코루틴은 Mutex, Channel 등을 사용하여 통신과 동기화를 수행할 수 있습니다. 1. Mutex (상호배제) Mutex는 상호배제(Mutual Exclusion)를 제공하여 여러 스레드 또는 코루틴이 공유 데이터에 안전하게 접근할 수 있도록 합니다. import kotlinx.coroutines.* import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock var counter = 0 val mutex = Mutex() fun main() = r..

Kotlin/포스팅 2024.01.09

코루틴 예외 처리

코루틴 예외 처리는 비동기 코드에서 예외를 효과적으로 처리하는 중요한 부분입니다. 코루틴에서 예외는 전파되며, 여러 가지 방법으로 처리할 수 있습니다. 1. 기본적인 예외 처리 코루틴에서 예외는 try, catch 블록을 사용하여 처리할 수 있습니다. 기본적인 방법은 다음과 같습니다. import kotlinx.coroutines.* fun main() = runBlocking { val job = launch { try { // 예외를 발생시키는 작업 throw RuntimeException("Exception in coroutine") } catch (e: Exception) { println("Caught an exception: ${e.message}") } } job.join() println(..

Kotlin/포스팅 2024.01.09

코루틴 디스패치

코루틴 디스패치(Dispatch)는 코루틴이 어떤 스레드 또는 어떤 스레드 풀에서 실행될지를 결정하는 메커니즘입니다. 코루틴 디스패치는 코루틴이 비동기적으로 실행되는 환경에서 중요한 역할을 합니다. Kotlin에서는 여러 가지 디스패처가 제공되며, launch, async, runBlocking 등의 함수에서 사용할 수 있습니다. 1. 디스패처 종류 1.1. Dispatchers.Default Default 디스패처는 CPU에 대한 최적화된 디스패처입니다. 일반적인 CPU 연산이 실행되는 스레드 풀에서 동작하며, 코루틴이 CPU 바운드 작업을 수행할 때 적합합니다. import kotlinx.coroutines.* fun main() = runBlocking { launch(Dispatchers.Defa..

Kotlin/포스팅 2024.01.09

코루틴 타임아웃

코루틴 타임아웃은 코루틴이 일정 시간 내에 완료되지 않으면 취소되도록 하는 기능을 제공합니다. 이를 통해 특정 작업이 지정된 시간 내에 완료되지 않으면 타임아웃 예외가 발생하고, 코루틴이 중단됩니다. 코루틴 타임아웃은 withTimeout 및 withTimeoutOrNull 함수를 통해 구현됩니다. 1. withTimeout 함수 withTimeout 함수는 주어진 시간 동안 코루틴을 실행하다가 지정된 시간을 초과하면 TimeoutCancellationException 예외가 발생하여 코루틴이 취소됩니다. import kotlinx.coroutines.* fun main() = runBlocking { try { withTimeout(2000) { repeat(3) { i -> delay(500) pri..

Kotlin/포스팅 2024.01.09

코루틴 취소

코루틴의 취소는 비동기 작업을 중단하고 관련된 리소스를 해제하는 중요한 측면입니다. 코루틴은 취소될 때 예외가 발생하며, 이 예외를 통해 취소 이유 등을 처리할 수 있습니다. 코루틴을 취소하는 방법과 취소와 관련된 주요 개념에 대해 알아보겠습니다. 1. 코루틴 취소하기 cancel 함수 Job 인터페이스를 구현한 객체는 cancel 함수를 사용하여 취소될 수 있습니다. 이 함수를 호출하면 예외가 발생하고, 취소된 코루틴은 더 이상 실행되지 않습니다. import kotlinx.coroutines.* fun main() = runBlocking { val job = launch { try { // 비동기 작업 delay(1000) println("Coroutine is running.") } catch (..

Kotlin/포스팅 2024.01.09

코루틴 잡 생명 주기

코루틴의 생명주기는 Job이라는 인터페이스를 통해 관리됩니다. Job은 특정 코루틴의 생명주기와 상태를 추상화한 것으로, 코루틴이 활성화되어 있는지, 완료되었는지, 취소되었는지 등을 관리합니다. 이를 통해 코루틴의 실행과 관련된 동작을 제어하고 취소하거나 대기할 수 있습니다. 1. Job의 기본 상태 - Active: 코루틴이 실행 중인 상태입니다. 비동기 작업이 진행 중이거나, 코루틴이 아직 완료되지 않은 경우에 해당합니다. - Completed: 코루틴이 정상적으로 완료된 상태입니다. 모든 코드가 실행되고 반환값이 나온 경우에 해당됩니다. - Cancelled: 코루틴이 취소된 상태입니다. cancel 함수가 호출되거나 예외가 발생하여 코루틴이 중단된 경우에 해당됩니다. launch 함수로 Job 생..

Kotlin/포스팅 2024.01.09

코루틴 흐름 제어

코루틴의 흐름 제어는 비동기 코드의 순차적 실행을 보장하고, 여러 코루틴 간에 데이터를 전달하고 결합하는 등의 작업을 가능하게 합니다. 이를 위해 여러 함수와 패턴이 제공되며, 아래에서 주요한 흐름 제어에 대해 알아보겠습니다. 1. 코루틴 빌더 코루틴은 launch, async, runBlocking 등의 빌더 함수를 사용하여 생성됩니다. 이들 빌더 함수는 코루틴의 시작과 실행을 담당하며, 각각의 특징에 따라 사용됩니다. launch: 비동기적으로 실행되는 코루틴을 시작하고 반환값이 없습니다. import kotlinx.coroutines.* fun main() = runBlocking { launch { // 비동기 작업 delay(1000) println("Coroutine is running.") ..

Kotlin/포스팅 2024.01.09

코루틴 문맥

코루틴 문맥(Coroutine Context)은 코루틴이 실행되는 환경을 나타냅니다. 이 환경은 스레드 정보, 예외 처리 방식, 코루틴 실행을 위한 다양한 설정 등을 포함합니다. 코루틴은 launch, async 등을 통해 생성되며, 이때 특정한 문맥을 제공하여 실행됩니다. 1. CoroutineContext의 구성 요소 코루틴 문맥은 CoroutineContext 인터페이스를 통해 정의되며, 여러 구성 요소로 구성됩니다. - Job: 코루틴의 생명주기를 관리하는 핵심 요소로, Job 인터페이스를 구현합니다. - CoroutineDispatcher: 코루틴이 어떤 스레드에서 실행될지를 결정하는 요소로, CoroutineDispatcher 인터페이스를 구현합니다. - CoroutineName: 코루틴의 이..

Kotlin/포스팅 2024.01.07

코루틴 구조적 동시성

코루틴의 구조적 동시성(Structured Concurrency)은 비동기 코드를 더욱 안전하고 예측 가능하게 만들어주는 개념입니다. 이는 코루틴의 생명주기와 범위를 명확하게 정의하여 코루틴이 실행되는 동안의 상태와 예외 처리를 효과적으로 관리합니다. 1. Job과 CoroutineScope 코루틴은 Job과 CoroutineScope로 구성됩니다. Job은 특정 코루틴의 생명주기와 상태를 나타내며, CoroutineScope는 여러 코루틴을 묶는 역할을 합니다. import kotlinx.coroutines.* fun main() = runBlocking { val job = Job() // 코루틴의 생명주기를 관리하는 Job 생성 val coroutineScope = CoroutineScope(Dis..

Kotlin/포스팅 2024.01.07

코루틴 영역

코루틴 영역(coroutine scope)은 코루틴의 생명주기와 범위를 관리하는 개념입니다. 코루틴을 시작하고 실행하는 동안 적절한 코루틴 스코프를 사용하면 메모리 누수나 예기치 않은 동작을 방지할 수 있습니다. 코루틴 스코프는 다양한 빌더 함수나 클래스를 통해 생성되며, 여러 코루틴이 함께 동작하는 환경을 제공합니다. 1. GlobalScope GlobalScope는 애플리케이션 전체 생명주기에 걸쳐 유지되는 전역 코루틴 스코프입니다. 그러나 애플리케이션이 종료될 때까지 코루틴이 계속 실행되므로 사용에 주의가 필요합니다. import kotlinx.coroutines.* fun main() { GlobalScope.launch { // 애플리케이션 전역에서 계속 실행되는 코루틴 delay(1000) p..

Kotlin/포스팅 2024.01.07

코루틴 빌더

코루틴 빌더는 코틀린에서 코루틴을 생성하고 관리하는 데 사용되는 함수 또는 키워드입니다. 코루틴 빌더는 launch, async, runBlocking 등이 있으며, 각각의 빌더는 특정한 용도로 사용됩니다. 아래에서 주요한 코루틴 빌더들에 대해 살펴보겠습니다. 1. launch launch 빌더는 가장 기본적인 형태의 코루틴 빌더로, 비동기적으로 코드 블록을 실행합니다. 반환값이 없으며, 예외를 던지지 않는다면 코루틴의 실행이 완료되면 바로 다음 코드로 진행됩니다. import kotlinx.coroutines.* fun main() { GlobalScope.launch { // 비동기 작업 delay(1000) println("Coroutine is running.") } println("Main th..

Kotlin/포스팅 2024.01.07