안드로이드 개발자의 창고
[20일차 Kotlin] 스레드(Thread) 본문
출처 : 안드로이드 앱스쿨 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 |