쓰레드의 기동 방법
쓰레드의 기동방법에는 2가지 방법이 있다.
1. Thread 클래스의 서브 클래스 인스턴스를 사용한다.
MultiThread2 클래스는 주어진 문자열을 10000회 표시하는 쓰레드를 나타낸다.
표시할 문자열은 생성자의 인수로 주어져 message 필드에 보관된다.
MultiThread 클래스는 Thread 클래스의 서브클래스로서 선언 되어있다.
main 메소드 안에서는 multiThread2 클래스의 인스턴스를 만들고 곧바로 그 인스턴스의 start 메소드를 호출한다.
앞 글에서는 프로그램을 간단히 만들기 위해 하나의 문장으로 쓰레드를 기동 시켰다.
하지만 MultiThread2의 인스턴스를 만든다와 그 인스턴스에 대응하는 쓰레드를 기동한다 는 어디까지나 별개의 처리이다. start 메소드를 호출하기 전까지는 인스턴스가 만들어져 있다 하더라도 쓰레드가 기동하지 않는다.
명심해야 할것은 MultiThread의 인스턴스가 만들어졌다고 해서 쓰레드가 기동하는것은 아니며,
쓰레드가 종료했다고 해서 MulitiThread2의 인스턴스가 사라져버린 것은 아니라는 것이다.
2. Runnable 인터페이스의 구현 클래스 인스턴스를 사용한다.
Runnable 인터페이스는 java.lang 패키지에 있는 인터페이스이다.
Runnable 인터페이스를 구현한 클래스는 run 메소드를 반드시 구현해야 한다. (인터페이스를 상속 받았기 떄문)
위 방법에서는 Thread의 인스턴스를 만들 때 Printer 클래스의 인스턴스를 생성자의 인수로서 건넨다. 그리고 start 메소드를 이용해 쓰레드를 기동한다.
주석처리 된 내용도 위의 내용과 동일한 방법이다.
** Thread 클래스 자신도 Runnable 인터페이스를 구현하고 있고 run 메소드를 가지고 있다. 하지만 Thread 클래스 run 메소드의 본체는 비어 있으며 아무것도 실행 하지 않는다.
Thread 클래스의 run 메소드는 보통 서브 클래스에 의해 오버라이드 된다.
'자바' 카테고리의 다른 글
| Thread Synchronized (0) | 2020.04.19 |
|---|---|
| Thread Sleep (0) | 2020.04.19 |
| Thread - [multi Thread] (0) | 2020.04.19 |
| Thread [single Thread] (0) | 2020.04.19 |
| 자바 기본 문법 - 클래스 (0) | 2019.01.15 |