멀티 쓰레딩의 장점
- CPU의 사용률을 향상시킨다.
- 자원을 보다 효율적으로 사용할 수 있다.
- 사용자에 대한 응답성이 향상된다.
- 작업이 분리되어 코드가 간결해진다.
Thread 클래스 vs Runnable 인터페이스
Thread 클래스를 사용하는 방법과 Runnable 인터페이스를 구현하는 방법 두가지가 있다.
- Thread클래스를 상속받으면 다른 상속이 불가능 하기에 대체로 Runnable인터페이스를 사용한다.
- Runnable 인터페이스를 구현하는 방법이 재사용성이 높고 코드의 일관성을 유지할 수 있는 장점이 있다.
- Runnable 인터페이스는 run()메서드만 정의되어있는 간단한 인터페이스이다.
- Thread 클래스를 상속받으면, Thread 클래스의 메소드를 직접 호출할 수 있지만 .Runnable을 구현하면 Thread클래스의 static 메소드인 currentThread()를 호출하여 쓰레드에 대한 참조를 얻어 와야만 호출이 가능하다.
Class MyThread extends Thread{
public void run(){} // Thread 클래스의 run()을 오버라이딩
}
Class MyThread implements Runnable{
public void run(){} // Runnable 인터페이스의 추상메서드 run()을 구현
}
프로그램 예제
public class Thread1 {
public static void main(String args[]) {
Thread_1 t1 = new Thread_1();
Runnable r = new Thread_2();
Thread t2 = new Thread(r);
t1.start();
t2.start();
}
}
class Thread_1 extends Thread {
public void run() {
for (int i = 0; i < 5; i++)
System.out.println(getName());
}
}
class Thread_2 implements Runnable {
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName()); // Runnable 인터페이스는 Thread클래스의 currentThread()를 홀출하여 쓰레드에 대한 참조를 얻어와야만 호출이 가능하다.
}
}
}
※주의
Thread_1 t1 = new Thread_1();
t1.start();
t1.start();
한 번 사용한 쓰레드는 다시 재사용 할 수 없다. 재사용시 IllegalThreadStateException이 발생한다.
만약 재사용을 하고 싶다면.
Thread_1 t1 = new Thread_1();
t1.start();
t1 = new Thread_1();
t1.start();
와 같이 다시 재 정의 한뒤에 사용해야 한다.
'JAVA > Thread' 카테고리의 다른 글
Java Thread 대표 메서드 소개 및 특징 정리 (0) | 2018.05.27 |
---|---|
synchronous vs asynchronous (0) | 2016.12.24 |
쓰레드 개념정리 (0) | 2016.12.21 |
JAVA 데몬 스레드 소개 (0) | 2016.12.21 |
synchronized 쓰레드 예제 프로그래밍 (0) | 2016.12.21 |