이 글은 새차원님이 만들어 놓은 동영상을 보면서 정리해놓은 글입니다.
suspend fun loadUser(){
val user = api.fetchUSer()//새로운 쓰레드 생성되고
show(user)//UI 업데이트 가능
}
fun main() {
GlobalScope.launch{//GlobalScope : 라이프타임이 프로그램 전체를 뜻함. 코루틴 스코프에서 반환됨.
delay(1000L)
println("World")
}
thread{//쓰레드와 코루틴든 비슷하다.
Thread.sleep(1000)
println("World")
}
println("Hello,")
Thread.sleep(1000)
}
fun main() {
GlobalScope.launch{//
delay(1000L)
println("World")
}
println("Hello,")
runBlocking{//런치와 같은 코루틴 빌러
Thread.sleep(2000)
}
}
- runBlocking : 메인쓰레드가 런블럭킹 때문에 가독성이 좋아짐.
fun main() = runBlocking {
GlobalScope.launch {
delay(3000L)//3초 뒤에 끝나내? 으잉? 실행도 못 해보고 프로그램 끝나다니!!
println("World!")
}
println("Hello, ")
delay(2000L)//2초 뒤에 끝난다.
}
fun main() = runBlocking {
val job = GlobalScope.launch {
delay(3000L)
println("World!")
}
println("Hello, ")
job.join()// job이 끝날 때 까지 기다렸다가 종료 됨. 그러나 join을 계속 생성해야함. 더 좋은 방법은 lauch쓰기
}
fun main() = runBlocking {
launch {//runBlocking에 child로 관리하기
delay(1000L)
println("World!")
}
println("Hello, ")
}
fun main() = runBlocking {
launch {
myWorld()
}
println("Hello,")
}
suspend fun myWorld() {// suspend 넣으면서 일시중지 할 수 있다.
delay(1000L)
println("world")
}
fun main() = runBlocking {
repeat(100_000){
launch {
delay(1000L)
print(".")
}
}
}
fun main() = runBlocking {
GlobalScope.launch {
repeat(1000) { i ->
println("I'm sleeping $i...")
delay(500L)
}
delay(1300L)
}
좀 어려웠던 개념이 동영상을 보면서 쉽게 다가왔다.
동영상 요약본 정리 후엔 REST API를 코루틴으로 만들기위해서 어떤 식으로 공부해봤고 적용해봤는지 정리해보겠다.
- [새차원, 코틀린 코루틴 1](www.youtube.com/watch?v=Vs34wiuJMYk&list=PLbJr8hAHHCP5N6Lsot8SAnC28SoxwAU5A&index=1)
- [새차원, 코틀린 코루틴 2](www.youtube.com/watch?v=14AGUuh8Bp8&list=PLbJr8hAHHCP5N6Lsot8SAnC28SoxwAU5A&index=2)
JVM 메모리 구조 (0) | 2022.06.15 |
---|---|
[Kotlin, Android] let, with, run, apply, also (0) | 2021.05.09 |
Kotlin Null 체크(? / ?: / !!) (0) | 2021.03.05 |
Android GPS Tutorial (0) | 2021.02.20 |
[Android] GPS 동작 원리 (0) | 2021.01.29 |