반응형
스레드를 구현하는 두가지 방법
1. Thread클래스를 상속(extends) -> run() 오버라이드
2. Runnable인터페이스 구현(implements) -> run() 구현
1. Thread클래스 상속하는 방법
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val testThread = TestThread()
testThread.start()
}
}
class TestThread: Thread(){
override fun run() {
Log.d("SSS", "헬로우")
}
}
2. Runnable 인터페이스를 구현해서 하는 방법
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val tr = TestRunnable()
val thread = Thread(tr)
thread.start()
}
}
class TestRunnable: Runnable{
override fun run() {
Log.d("SSS", "요호호")
}
}
두 방법의 차이
항목 | Runnable 인터페이스 구현 | Thread 클래스 상속 |
---|---|---|
코드 | implements Runnable | extends Thread |
범위 | 단순히 run() 메서드만 구현하는 경우. | Thread 클래스의 기능 확장이 필요한 경우. |
설계 | 논리적으로 분리된 태스크(Task) 설계에 장점. | 태스크(Task)의 세부적인 기능 수정 및 추가에 장점. |
상속 | Runnable 인터페이스에 대한 구현이 간결. | Thread 클래스 상속에 따른 오버헤드. |
반응형
'Android > Android 일반' 카테고리의 다른 글
RecyclerView 클릭 시 Ripple넣기 (0) | 2019.03.27 |
---|---|
Handler 구현 (0) | 2019.03.26 |
핸들러(Handler), 루퍼(Looper), 메시지큐(Message Queue) (0) | 2019.03.26 |
Service(unbind, bind) (0) | 2019.03.25 |
AIDL(Android Interface Definition Language) (0) | 2019.03.25 |