스레드를 만드는 방법 중 black-box 방법으로 알려진 Runnable 인터페이스를 구현하는 방법에 대해 알아보겠습니다.
스레드를 만드는 방법은 white-box방법과 black-box방법이 있습니다.
white-box방법은 java.lang.Thread 객체를 extend하여 만드는 것이고,
black-box 방법은 java.lang.Runnable 인터페이스를 implements 하여 만드는 것입니다.
white-box방식으로 제작한 스레드는 컴파일 타임 시점에 형식이 결정되어 동적인 기능 변경이 불가능하다는 단점이 있습니다.
반면 스레드를 Runnable객체로 만들게 되면 스레드를 상속받아 만드는 white-box방식에 비해 어플리케이션의 유연성과 확장성을 보장받을 수 있게 됩니다.
Runnable로 스레드 만드는 방법
1. class를 선언하고 Runnable 인터페이스를 implements한다.
class '클래스 이름' implements Runnable |
2. run() 메서드를 오버라이드하여 구현한다.
@Override
public void run() {
// 이곳에 실행할 코드를 작성하시면 됩니다.
// 이 스레드는 자신의 번호를 3번 반복해서 출력합니다.
for(int i=0; i<3; i++) {
System.out.println("제 번호는 " + num + "입니다.");
}
}
3. Thread 객체를 생성하고, 생성자로 만든 객체를 넣어준다.
// 1. Runnable 인터페이스를 상속한 객체를 구현합니다.
RunnableTest runnableTest1 = new RunnableTest();
RunnableTest runnableTest2 = new RunnableTest();
RunnableTest runnableTest3 = new RunnableTest();
RunnableTest runnableTest4 = new RunnableTest();
RunnableTest runnableTest5 = new RunnableTest();
// 2. Thread 객체의 생성자로 위 객체를 전달합니다.
Thread thread1 = new Thread(runnableTest1);
Thread thread2 = new Thread(runnableTest2);
Thread thread3 = new Thread(runnableTest3);
Thread thread4 = new Thread(runnableTest4);
Thread thread5 = new Thread(runnableTest5);
4. 만든 객체의 start() 메서드를 실행한다.
thread1.start();
thread2.start();
thread3.start();
thread4.start();
thread5.start();
위 예제의 전체 코드
package example;
public class RunnableTest implements Runnable{
int num;
public RunnableTest() {
// 0~99의 숫자중 하나의 값을 랜덤으로 지정합니다.
this.num = (int)(Math.random()*100);
}
@Override
public void run() {
// 이곳에 실행할 코드를 작성하시면 됩니다.
// 이 스레드는 자신의 번호를 3번 반복해서 출력합니다.
for(int i=0; i<3; i++) {
System.out.println("제 번호는 " + num + "입니다.");
}
}
public static void main(String[] args) {
// 1. Runnable 인터페이스를 상속한 객체를 구현합니다.
RunnableTest runnableTest1 = new RunnableTest();
RunnableTest runnableTest2 = new RunnableTest();
RunnableTest runnableTest3 = new RunnableTest();
RunnableTest runnableTest4 = new RunnableTest();
RunnableTest runnableTest5 = new RunnableTest();
// 2. Thread 객체의 생성자로 위 객체를 전달합니다.
Thread thread1 = new Thread(runnableTest1);
Thread thread2 = new Thread(runnableTest2);
Thread thread3 = new Thread(runnableTest3);
Thread thread4 = new Thread(runnableTest4);
Thread thread5 = new Thread(runnableTest5);
thread1.start();
thread2.start();
thread3.start();
thread4.start();
thread5.start();
}
}
실행 결과
'Java > 기초' 카테고리의 다른 글
[Java] 이클립스 설치방법 - JDK 1.7 설치, Eclipse Luna 설치 (0) | 2019.08.23 |
---|---|
[Java] String .split(".")결과가 공백이 나올 때 해결방법 (1) | 2019.08.21 |
[java] 스레드(Thread)[4] - 스레드의 상태(state) 제어 (0) | 2019.07.27 |
[java] 스레드(Thread)[3] - 스레드 우선순위를 설정하는 방법 (0) | 2019.07.27 |
[java] 스레드(Thread)[1] - run()과 start()의 차이 (2) | 2019.07.27 |
댓글