Thread

똘이주인·2021년 8월 5일
0

Thread 란?

스레드는 동시작업을 할려면 필요한 하나의 작업단위라고 볼 수 있다.

예를 들어, 음악을 다운로드 받고 이를 재생할 수 있는 어플리케이션이 하나 있습니다. 정상적인 어플이라면 음악을 다운로드 받는 동안에도 기존에 있는 음악을 재생 할 수 있다. 하지만 어떤 음악을 전부 다운 받을때까지 음악 재생이고 검색이고 뭐고 화면이 그냥 우뚝 서있게 된다면 굉장히 불편한 어플이 된다.

이는 음악 어플 내에 기능을 수행할 수 있는 동작 흐름이 '하나뿐' 이기 때문이다.

스레드는 '여러 갈래의 작업 흐름'을 만듦으로써 이러한 문제를 말끔히 해결 해 줄 수 있다.

" 하나의 프로그램 내에서

여러 동작을 동시에 수행한다 "

이를 멀티 스레딩(Multi Threading) 이라고 합니다. 이미 자바나 다른 언어에서도 스레드라는 개념이 있지만  안드로이드에서의 스레드는 주로 서버와의 통신에서 사용

Thread 의 논리적 구조

스레드는 하나의 프로세스에서 동작하기 위해 '프로세스의 자원을 공유' 하게 된다. 다시 말해, 하나의 프로그램 내에서 정의하고 구현 해 놓은 '변수'나 '메소드'등을 공유하게 된다. 자원을 공유한다는 개념이 상당히 중요한데, 그림으로 설명하자면 다음과 같다.

Thread 구현

안드로이드에서 스레드를 구현하는 방법은 크게 두가지로 구현 할 수 있다.

  1. extends Thread

    Thread 를 상속 받는 방법이든 Runnable 을 구현 하는 방법이든 주목해야할 메소드는 run()

    start() 이다.

Thread 클래스를 상속 받은 후,**run() 메소드**를 Override 하여 스레드가 무엇을 할지를 정해 줍니다. 이후에 메인 액티비티 내에서 스레드를 생성해주고 해당 스레드를**start()**시켜 줌으로써 스레드를 동작 시킬 수 있습니다.
  1. implement Runnable

    Runnable 인터페이스를 구현하는 방법 또한 run() 메소드로 스레드 동작을 구현하고 start() 로 스레드를 실행 시키는 주된 흐름은 같지만선언 하는 방식이 약간 달라진다.Thread 동작 예제

Thread 동작 예제

  1. Thread 는 Activity 의 생성과 함께 실행이 되며 1초당 한번씩 덧셈 연산을 진행 하고 이를 Thread Result 로 보여준다.

  2. 버튼을 클릭 할 때마다 값이 1씩 증가하고 이를 Main Result 로 보여준다.

로직을 통해 사용자에게 보여지는 버튼 클릭의 행동과는 별개로 Activity 가 실행 되자마자 background 에서 묵묵히 계산을 수행중인 Thread 의 결과 값을 관찰 할 수 있습니다.

결과화면

0개의 댓글