스레드

    [Coroutine 부록] 2. 사용자 정의 ThreadPool을 사용하는 커스텀 디스패처 만들기

    사실상 안드로이드 개발을 하면서는 Thread 혹은 Thread Pool을 만들 일이 거의 없다. 이미 만들어진 Dispatcher을 사용하는 것만으로 충분하기 때문이다. 하지만, 종종 커스텀 디스패처를 만들어야 할 필요하가 있다. 이에 부록으로 이 글을 쓰게 되었다. 커스텀 디스패처를 만드는 두가지 방법 코루틴에서는 아래 두가지 메서드로 커스텀 디스패처를 만들 수 있다. newSingleThreadContext(name: String) : Single Thread를 만드는 메서드 newFixedThreadPoolContext(nThreads: Int, name: String) : Thread Pool을 만드는 메서드 newSingleThreadContext로 단일 스레드를 사용하는 커스텀 디스패처 만들..

    [Coroutine] 3. CoroutineDispatcher 란 무엇인가?

    Coroutine을 공부하면서 CoroutineDispatcher에 대해 상세히 설명된 글이 없어서 이 글을 작성하게 되었다. 많은 사람들에게 도움이 되길 바란다. CoroutineDispatcher 란 무엇인가? 코루틴을 시작하게 되면, CoroutineDispatcher란 단어를 가장 먼저 접하게 된다. CoroutineDispatcher은 Coroutine과 Dispatcher 단어의 합성어이다. 여기서 Coroutine은 코루틴이며, Dispatch란 한국어로 '보내다' 라는 뜻이다. 즉, CoroutineDispatcher은 코루틴을 보내는 객체를 뜻한다. 그렇다면 CoroutineDispatcher은 코루틴을 어디로 보낼까? 바로 스레드(Thread)로 보낸다. 모든 작업은 스레드 위에서 실행..

    [Coroutine] 1. 코루틴은 어떻게 스레드 작업을 최적화 하는가?

    Thread 구조와 다중 Thread 작업의 필요성 하나의 프로세스(Process) 에는 여러 스레드(Thread) 가 있고, 각 스레드는 독립적으로 작업을 수행할 수 있다. 예를 들어 JVM 프로세스 상에서는 스레드는 그림1과 같이 구성된다. 그림1의 메인 스레드(Main Thread)를 보자. JVM프로세스는 메인 스레드가 main 함수를 실행하며 시작되며, 만약 프로세스 내에 사용자 스레드가 메인 스레드 밖에 없는 상황에서는 메인 스레드가 종료되면 프로세스 또한 강제로 종료되는 특성을 가진다. 이때 메인 스레드는 한 번에 하나의 작업을 실행 가능하다. 그런데 그림에서는 메인 스레드말고 다른 2개의 스레드(Thread)가 보인다. 이 스레드(Thread)들은 사용자에 의해 생성되는 스레드로, 메인 스..