Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- data serialization formats
- linux job
- nas
- 3D 프린터 용어
- Jenkins
- OnlineIDE
- docker container
- Notification
- ci/cd
- 3D프린터입문
- NAS HDD교체
- octoprint
- Token인증방식
- 3D모델링
- git
- 3D프린터 입문
- kubernetes
- github
- gitlab
- 리눅스 파일동기화
- Kotlin
- docker
- 3d프린터 초보
- IoTNetwork
- C언어
- 코틀린개발환경
- 3D프린터
- 3D
- 데이터 직렬화 포맷
- 네이버클라우드
Archives
- Today
- Total
0과 1을 공부하다.
[Kotlin] 코틀린 코루틴 본문
728x90
[Kotlin] 코틀린 특징 및 개발환경 구성 에서 코틀린의 장점으로 코루틴(Coroutines)을 통해 비동기 프로그래밍을 간단하고 효율적으로 할 수 있도록 해주는 장점이 있다고 소개하였다. 본 게시글에서는 코틀린 언어에서의 코루틴에 대해 설명하고 코루틴의 사용법에 대해 기술한다.
코루틴이란 ?
코루틴(Coroutines)은 코틀린에서 비동기 프로그래밍을 쉽게 처리할 수 있도록 도와주는 경량 스레드이다. 코루틴을 사용하면 비동기 코드와 동기 코드의 차이를 최소화하면서도, 비동기 작업을 더 간단하고 읽기 쉽게 작성할 수 있다.
코루틴의 특징은 아래와 같다.
- 경량성: 코루틴은 매우 경량이며, 수천 개의 코루틴을 생성해도 성능에 큰 영향을 미치지 않는다. 이는 실제 스레드보다 적은 리소스를 사용하기 때문이다.
- 비동기 프로그래밍: 코루틴은 비동기 작업을 직관적으로 작성할 수 있도록 도와준다. 콜백 지옥(callback hell)을 피할 수 있으며, 코루틴을 통해 코드를 더 간결하고 유지보수하기 쉽게 만들 수 있다.
- 구조적 동시성: 코루틴은 코루틴 빌더와 스코프를 사용하여 구조적으로 동시성을 관리한다. 이를 통해 코루틴이 제대로 시작되고 완료되며, 예외가 처리되는지 쉽게 알 수 있다.
코루틴의 주요 요소
- 코루틴 빌더: 코루틴을 시작하는 데 사용한다. 주요 코루틴 빌더에는 launch와 async가 있다.
- launch: 결과를 반환하지 않는 코루틴을 시작한다.
- async: 결과를 반환하는 코루틴을 시작한다. Deferred 객체를 반환하며, await를 호출하여 결과를 얻을 수 있다.
- 코루틴 스코프: 코루틴의 생명주기를 관리한다. 코루틴 스코프 내에서 시작된 코루틴은 스코프가 종료될 때 모두 취소된다.
- GlobalScope: 애플리케이션 전체에서 동작하는 코루틴을 시작한다. 주로 사용하지 않는 것이 좋다.
- CoroutineScope: 필요에 따라 스코프를 정의하여 사용할 수 있다.
- suspend 함수: 코루틴 내에서 일시 중단 및 재개할 수 있는 함수이다. suspend 키워드를 사용하여 정의된다.
코루틴 예제
- 기본 코루틴
import kotlinx.coroutines.*
fun main() {
// GlobalScope를 사용하여 코루틴 시작
GlobalScope.launch {
delay(1000L)
println("World!")
}
println("Hello,")
Thread.sleep(2000L) // main 스레드가 종료되지 않도록 잠시 대기
}
- 코루틴 스코프와 빌더
import kotlinx.coroutines.*
fun main() = runBlocking {
// runBlocking은 코루틴 스코프를 생성하고 완료될 때까지 현재 스레드를 차단
launch {
delay(1000L)
println("World!")
}
println("Hello,")
}
- suspend 함수
import kotlinx.coroutines.*
suspend fun doSomething() {
delay(1000L)
println("Done!")
}
fun main() = runBlocking {
doSomething()
println("Completed")
}
- async와 await
import kotlinx.coroutines.*
fun main() = runBlocking {
val deferred1 = async {
delay(1000L)
"Hello"
}
val deferred2 = async {
delay(2000L)
"World"
}
println("${deferred1.await()} ${deferred2.await()}")
}
※ 본 게시글의 정보가 잘못 되었거나 부족한 부분에 대한 피드백을 환영합니다.
* CopyRight 2024. Jay Park All rights reserved.
728x90
'Study > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 참고하기 (0) | 2024.07.02 |
---|---|
[Kotlin] 코틀린 클래스 (0) | 2024.07.02 |
[Kotlin] 코틀린 함수 (0) | 2024.07.02 |
[Kotlin] 코틀린 조건문 / 반복문 (0) | 2024.07.02 |
[Kotlin] 코틀린 리스트/배열 (0) | 2024.07.02 |
Comments