반응형
package multi_thread;
import java.awt.Toolkit;
public class BeepThread extends Thread {
@Override
public void run() {
Toolkit toolkit = Toolkit.getDefaultToolkit();
for(int i = 0 ; i < 5 ; i++) {
toolkit.beep();
try {Thread.sleep(500);} catch(Exception e) {}
}
}
}
package multi_thread;
import java.awt.Toolkit;
public class BeepPrintExample2 {
public static void main(String[] args) {
// 기존 방법
// Runnable beepTask = new BeepTask(); // Runnable 상속 받은 BeepTask 클래스
// Thread thread = new Thread(beepTask);
// 방법1 (Runnable 객체 선언 후 Injection 안 해줘도 된다.
Thread thread = new BeepThread();
thread.start();
// 방법2 (익명 객체를 이용한 방법)
/*
Thread thread2 = new Thread() {
public void run() {
Toolkit toolkit = Toolkit.getDefaultToolkit();
for(int i = 0 ; i < 5 ; i++) {
toolkit.beep();
try {Thread.sleep(500);} catch(Exception e) {}
}
}
};
thread2.start();
*/
for (int i = 0 ; i < 5 ; i++) {
System.out.println("띵");
try {Thread.sleep(500);} catch(Exception e) {}
}
}
}
Runnable을 이용하지 않고 Thread의 하위 클래스로 스레드를 정의하면서 작업 내용을 포함 시킬 수도 있습니다.
extends로 Thread를 받고 run() 안에 스레드 실행할 코드를 정의합니다.
아니면 저번에 한 거 처럼 익명객체로 이용해 클래스 생성하지 않고 사용할 수 있습니다.
Thread thread = new BeepThread();
Thread를 상속 받는 BeepThread는 하위 클래스 입니다.
큰 Thread에 담게 되는 것이죠 Runnable역할을 해주면서 코드를 더 줄일 수 있습니다.
반응형
'[Java] > [Java]' 카테고리의 다른 글
[Java] 자바 멀티스레드 [Multi-Thread] 스레드 우선순위설정하기 (0) | 2021.08.04 |
---|---|
[Java] 자바 멀티스레드 [Multi-Thread] 스레드 이름 설정하기 (setName, getName) (0) | 2021.08.04 |
[Java] 자바 멀티스레드[Multi-Thread] (Runnable) (0) | 2021.08.04 |
[Java] 자바 Throw , Throws 예외 처리 (0) | 2021.08.04 |
[Java] 자바 중첩 인터페이스(Interface) (0) | 2021.08.02 |