본문 바로가기

코틀린

코루틴 1탄

반응형

코루틴에 대해서 혼자서는 많이 공부하긴 했는데 한번도 블로그에 올린적은 없네요.

나중에 한번 정리해서 올리도록 하겠습니다.

오늘은 코루틴을 제가 오늘 본 내용에 대해서 포스팅 할게요.

 

일단 코루틴 디스패처에는 이름을 붙일 수 있습니다!

 

val dispatcher = newSingleThreadContext(name = "ServiceCall")
val task = GlobalScope.launch(dispatcher) {
	printCurrentThead()
}
task.join()
fun printCurrentThread() {
	println("Running in thread [${Thread.currentThread().name}]")
}

 

이렇게 하게 되면 결국 프린트는 "Running in thread ServiceCall" 로 만들 수 있습니다.

 

newSingleThreadContext 얘는 뭐냐 싶죠?

이 아이는 매우 비싼 리소스를 사용한다고 합니다. 이유가 뭘까요?

이유는 이름에 있습니다.ㅎㅎ

코루틴을 알고 계신분은 어느정도 유추를 할 수 있는데요.

코루틴은 쓰레드보다 더 가벼운 것이죠?

근데 이름 처럼 코루틴 풀이아닌 싱글스레드풀을 만들어 사용하게되죠.

코루틴의 의도와는 안맞게 thread를 새로 만드는 비용이 듭니다.

사용이 끝나면 반드시 release해야 하므로 use keyword를 사용하던지, top level에 변수로 지정해서 재활용하는 형태로 사용해야합니다.

 

반응형

'코틀린' 카테고리의 다른 글

코루틴 콘텍스트 (Context)  (0) 2021.01.03
코루틴 상태는 한 방향으로 이동  (0) 2020.12.21
Kotlin에서 Unit 과 Nothing  (0) 2020.04.21
코틀린에서 Sequence와 SAM  (0) 2020.04.14
Nothing 타입  (0) 2020.03.15