Archives
Recent Posts
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[20일차 Kotlin] 스레드(Thread) 본문

Computer/Kotlin

[20일차 Kotlin] 스레드(Thread)

Wise-99 2023. 5. 24. 19:00

 

출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT

 

 

 

📖 스레드(Thread)

스레드(Thread)란?

  • 쓰레드는 동시에 여러 개의 작업을 하고 싶을 때 사용하는 개념

스레드(Thread) 사용방법

  • Thread 클래스 상속 : start 메서드를 상속 받았기 때문에 객체 생성하고 start를 호출한다.
  • Runnable 인터페이스 구현 : start 메서드가 없기 때문에 Thread 클래스의 객체를 생성하여 이를 통해 가동한다.
  • Thread 고차 함수 사용
    • run 메서드에 들어갈 코드(스레드로 처리될 코드) 익명함수나 람다식으로 작성해서 넣으면 해당 코드를 스레드로 운영해준다.
    • start도 자동으로 호출하기 때문에 개발자가 명시적으로 호출하지 않아도 된다.

 

 

 

📖 예제 코드

✔️ Thread 클래스 상속

fun main() {
    val thread1 = ThreadClass1()
    thread1.start()
}

class ThreadClass1 : Thread(){
    override fun run() {
        super.run()

        for(a1 in 1..10){
            println("thread1")
        }
    }
}
  • ThreadClass1은 Thread 클래스를 상속받아 run() 메서드를 오버라이딩 했다.
  • ThreadClass1은 스레드를 가동하는 start 메서드를 상속 받았기 때문에 객체 생성하고 start를 호출한다.
  • for문에 있는 println("thread1")이 10번 출력된다.

✔️ Runnable 인터페이스 구현

fun main(){

    val thread2 = ThreadClass2()
    val thread3 = Thread(thread2)
    thread3.start()
}

class ThreadClass2 : Runnable{
    override fun run() {
        for(a1 in 1..10){
            println("thread2")
        }
    }
}
  • ThreadClass2는 Runnable 인터페이스를 구현한 클래스이다.
  • 해당 클래스는 start 메서드가 없기 때문에 Thread 클래스의 객체를 생성하여 가동시켰다.
  • for문에 있는 println("thread2")가 10번 출력된다.

✔️ Thread 고차 함수 사용

import kotlin.concurrent.thread

fun main(){
    thread{
        for (a1 in 1.. 10){
            println("thread3")
        }
    }
}
  • run 메서드에 들어갈 코드(스레드로 처리 될 코드)를 익명함수나 람다식으로 작성해서 넣어주면 해당 코드를 쓰래드로 운영해준다.
  • 해당 코드는 람다식으로 스레드를 작성한 예시이다.
  • start도 자동으로 호출하기 때문에 개발자가 명시적으로 호출하지 않아도 된다.

'Computer > Kotlin' 카테고리의 다른 글

[20일차 Kotlin] 스트림(Stream)  (0) 2023.05.24
[20일차 Kotlin] 예외처리(try - catch)  (0) 2023.05.24
[19일차 Kotlin] Map  (0) 2023.05.24
[19일차 Kotlin] Set  (0) 2023.05.24
[19일차 Kotlin] List  (0) 2023.05.24