취소와 타임아웃 #3 취소와 타임아웃 #3 목차 Job에 대해 취소 import kotlinx.coroutines.* suspend fun doOneTwoThree() = coroutineScope { val job1 = launch { println("launch1: ${Thread.currentThread().name}") delay(1000L) println("3!") } val job2 = launch { println("launch2: ${Thread.currentThread().name}") println("1!") } val job3 = launch { println("launch3: ${Thread.currentThread().name}") delay(500L) println("2!") } delay(800L).. Book & Lecture/FastCampus 3년 전
스코프 빌더, 잡 #2 스코프 빌더, 잡 #2 목차 suspend 함수에서 코루틴 빌더 호출 import kotlinx.coroutines.* suspend fun doOneTwoThree() { launch { println("launch1: ${Thread.currentThread().name}") delay(1000L) println("3!") } launch { println("launch2: ${Thread.currentThread().name}") println("1!") } launch { println("launch3: ${Thread.currentThread().name}") delay(500L) println("2!") } println("4!") } fun main() = runBlocking { doOne.. Book & Lecture/FastCampus 3년 전
스코프 빌더 #1 스코프 빌더 #1 목차 runBlocking 코루틴을 만드는 가장 간단한 함수. (코루틴 빌더라고 함) 코루틴을 만들고 코드 블록의 수행이 끝날 때까지 runBlocking 다음 코드를 수행하지 못하게 막음. import kotlinx.coroutines.runBlocking fun main() = runBlocking { println(Thread.currentThread().name) println("Hello") } 코루틴 빌더의 수신 객체 runBlocking안에서 this를 수행하면 코루틴이 수신 객체(Receiver)인 것을 알 수 있음. import kotlinx.coroutines.runBlocking fun main() = runBlocking { println(this) println(.. Book & Lecture/FastCampus 3년 전
코루틴 등장 #0 코루틴 등장 #0 목차 코루틴 등장 동시성 병렬성 동시성 동시성 없이는 사용자가 불편 다운로드 중에는 다운로드만 다운로드 시간이 오래걸릴수록 아무것도 할 수 없음. 프로그램을 다운받다 잘못되면 그 디스크의 처음부터 다시 다운로드 동시성 없이는, 하드웨어 리소스도 낭비 초당 수백만개 처리가능한 리소스가 있을 때, 동시성 없이는 사용중인 리소스 외 다른 리소스를 사용할 수 없음. 병렬성 여러 CPU가 개별 캐쉬를 사용하게 되면서 문제 발생 공유하고 있는 캐쉬의 데이터 불일치가 발생할 수 있음. 락이나 메모리 베리어가 필요할 수 있음. => 이러한 문제들을 콜백과 RxJava가 해결해 주었지만 아직도 많은 문제들이 있음. Book & Lecture/FastCampus 3년 전