Android - Thread

2022. 5. 16. 16:53IT/안드로이드

반응형

Coroutine을 알아보기전에, 먼저 스레드에 대해 간단히 알아보자.

스레드는 추상적인 개념이지만, App에서 코드를 실행하는 단일 경로로 생각하면 된다. 작성하는 각 코드 줄은, 스레드에서 실행될 명령어이다.

일반적으로 UI 스레드가 있는데, 지금까지 작성한 예제 코드들은 모두 기본 스레드에 있다. 

각 코드는, 다음 줄이 실행되기 전에 이전 줄이 완료 되기를 기다린다.

 

그러나, 실행 중인 App에는 기본 스레드 외에도 스레드가 더 있다. !

** 기본스레드는 UI 스레드를 의미한다. 근데 경우에 따라 아닐수도 있음. 

내부적으로 프로세서는 실제로 별도의 스레드로 작동하지 않고, 여러 명령어 간에 전환하여 멀티태스킹을 제공한다. 

기본 스레드가 아닌 스레드로 작업하면, App의 사용자 인터페이스 응답성을 유지하면서 App 이 이미지 다운로드와 같은 복잡한 작업을 백그라운드에서 실행 할 수 있다.  이를 동시 실행 이라고 한다. 


동시 실행을 통해 여러 코드를 순서에 맞지않거나 병렬로 실행할 수 있으므로 리소스의 효율성이 높아진다. 

동시 실행을 사용해야하는 이유는? 

예를들어, 네트워크 요청과 같은 실행작업을 진행하더라도 App에서 또 다른 작업의 실행이 중지되지 않기 위해. App의 동작이나 연결의 버벅임이 없도록 하기 위함이다. 

이런식으로... 사실 스레드 개념만 알면 이해하기는 아주 쉬운 예시죵...

앞서 설명했듯이, 스레드는 프로세서가 한번에 여러 작업을 처리하는 것처럼 보이는지에 관한 추상화이다. 

스레드가 실행되는 시간과 일시중지되는 시점은 개발자가 제어할수 없다. 그래서 스레드를 사용할 때 예측 가능한 출력을 기대할 수 는 없다. 

충돌 문제도 발생할 수 있는데, 이는 여러 스레드가 동시에 메모리의 동일한 값에 접근하려고 할때 발생한다. 그래서 이런 코드 작성에 도움이 되는 코루틴이라는 Kotlin의 기능에 관해 알아보자. 

 

 

 

 

 

 

728x90
반응형