JAVA/Thread

멀티 스레드

반응형

멀티 쓰레딩의 장점

-  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