불로구

안드로이드 스튜디오 - 코틀린 쓰레드 & runOnUiThread 본문

프로그래밍/코틀린 안드로이드

안드로이드 스튜디오 - 코틀린 쓰레드 & runOnUiThread

맹이맹이 2021. 4. 20. 19:54
반응형
쓰레드란?

- 프로세스 내에서 실제로 작업을 수행하는 주체

- 모든 프로세스는 하나 이상의 쓰레드를 가지고 있다.

- 두개 이상의 스레드를 멀티 쓰레드라고 한다.

- 안드로이드에는 MainThread와 다른 Thread가 있다.

- MainThread는 한번에 하나만 가능하며, 앱이 끝날때까지 정지 불가 -> 정지 시 crash 발생

- 다른 Thread는 한번에 여러가지 일을 할 수 있다.

 

 

runOnUiThread 란

- 현재 쓰레드가 UI 쓰레드라면 UI 자원을 사용하는 행동에 대해 즉시 실행

- 현재 쓰레드가 UI 쓰레드가 아니라면 UI 쓰레드의 자원 사용 이벤트 큐에 들어감

 

 

쓰레드 사용법

버튼을 눌렸을 때 스레드 시작

        val runnable: Runnable = object : Runnable {
            override fun run() {
                while (cnt < 100) {
                    Log.d("Thread-1", "${cnt++}")
                }
            }
        }
        
        val thread: Thread = Thread(runnable)
        Thread_Button.setOnClickListener {

            thread.start()
        }
        Thread(object : Runnable {
            override fun run() {
                while (cnt2 < 100) {
                    Log.d("Thread-2", "${cnt2++}")
                }
            }
        }).start()
        Thread(Runnable {
            while (cnt3 < 100) {
                Log.d("Thread-3", "${cnt3++}")
                Thread.sleep(2000)

                runOnUiThread {
                    if (cnt3 % 2 == 0) {
                        back.setBackgroundColor(R.color.white)
                    } else {
                        back.setBackgroundColor(R.color.black)
                    }
                }
            }
        }).start()

3번째는 람다식을 사용하여 쓰레드를 만들었으며, UI의 변경을 위해 runOnUiThread를 사용했다.

 

 

반응형
Comments