Kotlin
-
코루틴(Coroutine) 취소와 타임아웃Kotlin 2023. 2. 26. 15:09
Cancellation and Timeouts 이번 게시글에서는 코루틴의 취소와 timeout 처리에 대해 알아보자. ※ IntelliJ나 Android Studio가 설치되어 있지 않다면 Kotlin 공식 사이트에서 지원하는 온라인 IDE(Kotlin Playground)를 사용하여 아래 코드를 실행할 수 있다. Cancelling coroutine execution launch에서 반환되는 job 객체는 코루틴을 취소할 수 있는 기능을 제공해 준다. fun main() = runBlocking { val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // delay a ..
-
Corotuine Composing Suspending FunctionsKotlin 2023. 2. 25. 15:49
안녕하세요 안드로이드 10기 강다현입니다. 이번에 알아볼 내용은 Corotuine의 세 번째 스터디 내용 Composing Suspending Functions입니다! 코틀린 스터디는 한 주에 두 개씩 공식 문서를 같이 보면서 진행되는데요, 저는 그중 스터디 두 번째 주에서 Composing Suspending Functions 파트의 발표를 맡았었습니다. 본 글에서는 이전 주에서 헷갈렸던 내용 3가지를 보고, 그 이후 세 번째 파트 스터디 내용인 Composing Suspending Functions에 대해 알아보겠습니다! 공식 문서 헷갈렸던 것들 저는 공식문서 1,2 파트에서 3가지가 헷갈렸는데요, 하나하나 살펴보도록 하겠습니다. 1. 코루틴 생성 시 자동 생성되는 스레드 코루틴을 생성하다 보면 스레..
-
코루틴(Coroutine) 기본 개념 이해하기Kotlin 2023. 2. 24. 13:05
Coroutine? 루틴의 일종으로, 협동 루틴으로 이해하면 쉽다. 코루틴의 “Co”는 with, together를 뜻한다. 코루틴은 자신의 실행이 마지막으로 중단된 지점 다음의 포인트부터 동작을 재개한다. 즉, 순차 실행이 가능하다. (tmi) 코루틴 최초의 출판물은 1963년에 등장했다. 러닝 커브는 다음 그림 참고(출처 바로가기) ※ IntelliJ나 Android Studio가 설치되어 있지 않다면 Kotlin 공식 사이트에서 지원하는 온라인 IDE(Kotlin Playground)를 사용하여 아래 코드를 실행할 수 있다. Your First Coroutine 아래 코드를 실행하면, fun main() { GlobalScope.launch { // launch a new coroutine in b..
-
Coroutine BasicKotlin 2023. 2. 24. 12:50
안녕하세요. 1주차 코루틴 스터디에서 진행했던 내용을 공유하고자 포스팅 해봅니다. 코루틴 코루틴은 경량 스레드라고도 불린다. 코루틴은 스레드안에서 실행된다. 스레드 하나에 많은 코루틴이 있을 수 있다. 스레드와 코루틴의 가장 큰 차이점은 코루틴은 빠르고 적은 비용으로 생성할 수 있다는 것이다. → 즉, 코루틴은 기본적으로 스레드안에 존재하지만, 스레드에 얽메이지 않은 가벼운 스레드이다. 얼마나 가벼운가? 코루틴 생성함수를 만들어 소요시간을 계산해 얼마나 빠르게 생성되는지 테스트를 해보았습니다. override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activit..
-
Coroutine Cancellation and TimeoutsKotlin 2023. 2. 24. 12:42
코루틴 Basic 2장. Cancellation and Timeouts 코루틴 실행 취소하기 아래의 코드는 job을 생성하고 취소 시키는 코드입니다 val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) println("main: I'm tired of waiting!") job.cancel() // job을 취소한다 job.join() // job이 완료되기를 기다린다 println("main: Now I can quit.") 결과 job: I'm sleeping 0 ... job: I'm sleeping 1 ... job: I'm sleeping 2 ... main: I'..
-
Kotlin Scope FunctionKotlin 2023. 2. 24. 01:21
안녕하세요 여러분! mash-up 10기 신입 유희진입니다! 햐햐 저는 이번 코틀린 스터디에서 다뤄본 범위 지정 함수에 대해서 써볼까 합니다. 저는 개인적으로 코틀린을 처음 사용해본 것이 이번년도 7월이었는데, 그 때 제대로 배우질 못해서, 좀 코틀린을 자바처럼(?) 사용했던 것 같아요. 그러다 범위 지정함수라는 let, also, run, with, apply이 다섯 종류의 함수들을 알게되었는데, 제일 자바와는 다르게 느껴졌던 기능이었고, 계속 헷갈리는 기능들인 것 같아요. 저는 사실 이름에서 기능을 유추하기도 힘들다고 생각해요,,(ㅎ) 아무튼간, 이번 코틀린 스터디에서 다시 한 번 다루게 되면서 이젠 제대로 좀 알아보자싶어 블로그에 정리하면서 복습해보려고 합니다. Scope Function 범위 지정..
-
Coroutine 기초Kotlin 2023. 2. 14. 14:16
launch(Dispatchers.Unconfined) { // not confined -- will work with main thread println("Unconfined : I'm working in thread ${Thread.currentThread().name}") delay(500) println("Unconfined : After delay in thread ${Thread.currentThread().name}") } launch { // context of the parent, main runBlocking coroutine println("main runBlocking: I'm working in thread ${Thread.currentThread().name}") delay(10..