본문 바로가기

Android/Background 처리3

Future를 이용한 Thread Pool 작업 완료 통보 2021.12.13 - [Android : Kotlin/Deep-Dive] - 안드로이드 Thread Pool (위 글에서 이어집니다.) 1. 블로킹 식 작업 완료 통보 생성한 Thread Pool에서 작업 처리를 요청할 때 submit( ) Method는 작업 처리 결과를 Future 타입의 객체로 반환한다. submit( ) Method에 사용되는 파라미터는 아래와 같다. 반환되는 Future 객체는 submit( )을 통해 완료된 단일 작업 결과가 아니라 모든 작업이 완료될 때까지 기다렸다가 최종 결과를 얻는 데 사용한다. 그렇기 때문에 Future 객체를 지연 완료 객체 (Pending Completion Object)라고도 한다. Future의 get( ) Method를 호출하면 Thread가 .. 2021. 12. 13.
Thread Pool 1. Thread Pool Thread를 생성하면 OS가 메모리 공간을 확보하고 그 메모리를 Thread에 할당한다. 하지만, 수행해야 할 작업의 개수에 따라 병렬 작업 처리가 많아지면 그에 필요한 Thread의 개수가 증가하게 된다. 이 경우, Thread의 생성과 스케줄링으로 인해 OS가 바빠지게 되고 작업을 마치고 수거하는 일은 비용이 크기 때문에 어플리케이션 성능에 큰 영향을 줄 수 있다. 이를 방지하기 위해 Thread Pool을 사용할 수 있다. 위에서 설명한 것 처럼 Thread의 생성과 수거는 비용 소모가 많은 작업이다. 미리 Thread를 여러 개 만들어 두고 작업이 들어오는 대로 할당해서 사용하게 하고 작업이 끝나고 난 뒤에도 그대로 뒀다가 나중에 필요할 때 재사용하기 위한 장치가 Th.. 2021. 12. 13.
Thread, Looper, Handler 1. 동기와 비동기 안드로이드 Thread를 이해하기 위해 동기와 비동기의 차이를 명확하게 구분지어야 한다. 동기(Synchronous) 방식은 어떤 작업을 수행하고 그 작업이 완료될 때까지 다른 작업을 하지 못하고 기다리는 방식이다. 비동기(Asynchronous) 방식은 어떤 작업을 수행하지만 작업의 완료 여부와 관계없이 계속해서 다른 작업을 진행할 수 있는 방식이다. 2. Main Thread Android Components들이 시작되고 어플리케이션에 실행 중인 다른 Component들이 없으면 Android System은 하나의 단일 Thread로 Linux Process를 시작한다. 기본적으로 동일한 어플리케이션 내의 Components들은 같은 Process와 Thread에서 실행된다. (필.. 2021. 12. 8.