사실상 안드로이드 개발을 하면서는 Thread 혹은 Thread Pool을 만들 일이 거의 없다. 이미 만들어진 Dispatcher을 사용하는 것만으로 충분하기 때문이다. 하지만, 종종 커스텀 디스패처를 만들어야 할 필요하가 있다. 이에 부록으로 이 글을 쓰게 되었다.
커스텀 디스패처를 만드는 두가지 방법
코루틴에서는 아래 두가지 메서드로 커스텀 디스패처를 만들 수 있다.
- newSingleThreadContext(name: String) : Single Thread를 만드는 메서드
- newFixedThreadPoolContext(nThreads: Int, name: String) : Thread Pool을 만드는 메서드
newSingleThreadContext로 단일 스레드를 사용하는 커스텀 디스패처 만들기
이 메서드를 이용하면 코루틴을 실행할 수 있는 Single Thread Dispatcher가 만들어진다.
val singleThreadDispatcher = newSingleThreadContext("Single Thread ThreadPool")
위에서 만들어진 Dispatcher은 아래와 같이 활용될 수 있다. method() 부분에 필요한 작업을 넣으면 된다.
launch(singleThreadDispatcher) {
method()
}
newFixedThreadPoolContext로 멀티 스레드를 사용하는 커스텀 디스패처 만들기
이 메서드를 이용하면 코루틴을 실행할 수 있는 Thread Pool Dispatcher가 만들어진다. 첫 째 인자는 Thread Pool을 구성할 스레드의 개수이며, 둘 째 인자는 Thread Pool의 이름이다.
val dispatcherWith2Threads = newFixedThreadPoolContext(2,"ThreadPool with 2 threads")
위 코드에서는 2개의 스레드로 구성된 Thread Pool을 만들어 Dispatcher로 활용한다.
이 Dispatcher은 아래와 같이 활용될 수 있다. method() 부분에 필요한 작업을 넣으면 된다.
launch(dispatcherWith2Threads) {
method()
}
반응형