본문 바로가기

Android 공부

20. 안드로이드 멀티스레드

하나의 어플을 만들 때 우리는 쉽게 1개의 프로세스를 쓴다고 말한다. 하나의 프로세스 안의 스레드 안에서 UI 를 업데이트 하거나 데이터를 불러오고 메서드 실행시키는 등의 작업을 한다. 

 

 

그런데 이때 하나의 작업이 많은 시간과 자원을 필요로해서 스레드를 독점하여 오래 사용한다면 어떻게 될까?

 

답은 간단하다. 스레드가 멈추고 어플은 ANR 이 발생할 것이다. 

💡 ANR은 Application Not Responding의 약자로 말 그래도 어플리케이션이 응답하지 않을 때 (앱의 UI스레드가 오랫동안 차단되는 경우) 발생하는 오류이다. 

 

이러한 문제를 사전에 방지하고 해결하기 위해서 사용하는 방식이 바로 "멀티 스레드" 방식이다. 프로세스 내에 둘 이상의 스레드를 만들어 시간이 오래 걸리는 작업, 혹은 따로 실행되어야 하는 작업을 다른 스레드에서 작업하게 한다. 

 

 

안드로이드에서 프로세스 안의 기본 스레드는 UI 스레드라고도 불리며 이는 이름 그대로 UI 를 업데이트 하는 스레드이다. 멀티스레드 방식을 사용하는 어플이라면 기본 스레드가 중지되지 않도록 다른 스레드를 만들어 작업하고 그 결과를 기본 스레드에 전달하여 스레드가 중지되지 않고 원활하게 돌아갈 수 있게 된다. 코틀린에서 Handler 가 이러한 작업을 가능하게 한다. 자세한 내용은 looper 와 함께 따로 정리한 게시물을 참고 바란다.

 

 

12. 안드로이드 루퍼 & 핸들러

지난 게시물에서 프로세스와 스레드에 대해 간단하게 설명했다. 코틀린에서 여러개의 스레드를 만들어 작업하는 이유와 방법을 알아봤다. 자세한 내용은 앞의 게시물을 참고 바란다. 11. 안드로

self-motivated-developer.tistory.com

 

 

하지만 handler의 경우 코드가 복잡하고 구현이 어렵다는 단점이 존재한다. 

 

 

멀티스레드와 handler 일련의 과정을 거쳐서 최근에 높은 효율과 편의를 제공하는 코루틴이 많이 사용되고 있다. 코루틴을 사용하는 것은 멀티스레드 방식을 사용한다고 말할 수는 없다. 코루틴은 경량 스레드를 여러개 생성하여 연산을 처리하는 방식이기 때문이다. 실행 중인 스레드를 차단하지 않고 정지하는 행동을 지원해서 단일 스레드 내에 용도에 따른 여러 코루틴이 실행될 수 있도록 한다. 

 


코루틴을 본격적으로 분석하기 전에 멀티 스레드 방식과 그 과정을 설명하고 싶어서 이번 게시글로 정리했다. 앞으로는 코루틴에 대해서 정리하고 그 사용법에 대해서 분석해볼 예정이다. 

'Android 공부' 카테고리의 다른 글

22. 안드로이드 Fragment LifeCycle  (0) 2023.02.07
21. 안드로이드 코루틴 (Coroutine) - 기초  (0) 2023.02.06
19. 안드로이드 Manifest  (0) 2023.02.01
18. 안드로이드 Intent  (0) 2023.01.31
17. 안드로이드 Room  (0) 2023.01.30