Android에서 ExecutorService는 쓰레드 풀을 생성하고 관리하는 데 사용됩니다.
ExecutorService는 java.util.concurrent 패키지에 정의되어 있으며, Executor 인터페이스를 상속합니다. ExecutorService는 작업을 처리하는 쓰레드 풀을 생성하고, 작업 처리를 위한 작업 큐를 유지 관리합니다.
새로운 작업이 추가되면 작업 큐에 추가되고, 작업을 처리하기 위해 사용 가능한 쓰레드가 있으면 즉시 처리됩니다.
ExecutorService를 사용하면 애플리케이션에서 여러 작업을 동시에 처리할 수 있습니다.
또한, 작업 처리를 위해 새로운 쓰레드를 생성하는 것보다 쓰레드 풀을 사용하여 성능이 향상될 수 있습니다.
아래는 ExecutorService를 사용하여 작업을 실행하는 Kotlin 예제 코드입니다.
val executorService = Executors.newFixedThreadPool(2)
// 작업 생성
val task1 = Runnable {
println("Task 1 is running")
}
val task2 = Runnable {
println("Task 2 is running")
}
// 작업 큐에 추가
executorService.execute(task1)
executorService.execute(task2)
// 쓰레드 풀 종료
executorService.shutdown()
위 코드에서 Executors.newFixedThreadPool(2)는 2개의 쓰레드로 이루어진 쓰레드 풀을 생성합니다.
execute() 메소드를 호출하여 작업을 작업 큐에 추가하고, shutdown() 메소드를 호출하여 쓰레드 풀을 종료합니다.
ExecutorService를 사용하면 다양한 작업 처리 기능을 제공하는데, 예를 들어 submit() 메소드를 사용하여 작업을 실행하고 결과를 받을 수도 있습니다.
또한, Future 객체를 반환하여 작업 처리 상태를 추적할 수도 있습니다.
쓰레드풀(Thread pool)은 멀티 쓰레드 프로그래밍에서 쓰이는 기법으로, 쓰레드를 생성하고 삭제하는 일련의 과정에서 발생하는 오버헤드를 줄여주어 실행 속도를 향상시키는 기법입니다.
쓰레드풀은 쓰레드를 미리 생성하여 관리하며, 작업이 들어올 때마다 생성한 쓰레드를 할당하여 작업을 수행합니다.
쓰레드풀은 작업을 처리하고나면 해당 쓰레드를 재사용하므로 쓰레드 생성 및 삭제 과정에서 발생하는 오버헤드가 줄어들어 성능을 개선할 수 있습니다.
Android에서는 ExecutorService 인터페이스를 통해 쓰레드풀을 제공하고 있습니다.
ExecutorService는 Executor 인터페이스를 상속받아서 쓰레드풀을 생성하고, 작업을 제출하고, 종료할 수 있는 기능을 제공합니다.
다음은 Kotlin으로 구현한 쓰레드풀 예시 코드입니다.
import java.util.concurrent.Executors
// 쓰레드풀 생성
val executorService = Executors.newFixedThreadPool(4)
// 작업 제출
executorService.execute {
// 수행할 작업 내용
}
// 쓰레드풀 종료
executorService.shutdown()
위 코드에서 newFixedThreadPool(4)는 쓰레드풀의 최대 크기를 4로 설정한 것입니다.
작업 제출은 execute 메소드를 통해 이루어지며, shutdown 메소드를 통해 쓰레드풀을 종료할 수 있습니다.
'Android > 네트워킹' 카테고리의 다른 글
[Android/Async]Process, Thread에 대한 기본개념 (0) | 2023.02.26 |
---|