이제 우리가 앞선 아티클에서 Runnable을 생성해 만들었던 비프음+"띵~" 텍스트 출력 예제를 Thread 하위 클래스를 이용해서 구현해 보겠습니다.
// BeepTask.java
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) {}
}
}
}
위에서는 Runnable을 구현하는 클래스가 아닌 Thread를 상속하는 클래스로 선언했습니다. 그리고나서 run( ) 메서드를 오버라이드 해서 작업내용을 선언했습니다.
이제 이 BeepThread 클래스를 사용해서 실행을 진행해 보겠습니다.
// ExampleMain.java
import java.awt.Toolkit;
public class ExampleMain {
public static void main(String[] args) {
Thread thread = new BeepThread();
thread.start();
for(int i=0; i<5; i++) {
System.out.println("띵~");
try { Thread.sleep(500); } catch(Exception e) {}
}
}
}
위 예제를 실행하면, 지금까지 작업 스레드를 통해 작성했던 예제와 마찬가지로 "띵~" 텍스트와 사운드가 동시에 출력되는 것을 확인할 수 있습니다. 참고로, 역시 여기서도 익명 객체를 이용한 방식으로도 구현이 가능합니다.
import java.awt.Toolkit;
public class ExampleMain {
public static void main(String[] args) {
Thread thread = new 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) {}
}
}
};
thread.start();
for(int i=0; i<5; i++) {
System.out.println("띵~");
try { Thread.sleep(500); } catch(Exception e) {}
}
}
}
여기서 thread에서는 Thread의 익명객체를 대입하게 되는데, 이 익명 객체는 (기본 개념과 같이)Thread 클래스를 상속하는 익명의 자식 클래스가 되는 개념입니다.
'Programming > JAVA' 카테고리의 다른 글
멀티 스레드(3) - 스레드 우선순위 1 (0) | 2024.11.06 |
---|---|
멀티 스레드(2) - 작업 스레드 개념 : 스레드 이름 설정/호출 (1) | 2024.11.05 |
멀티 스레드(2) - 작업 스레드 개념 : Thread 하위 클래스로부터 생성 1 (0) | 2024.10.29 |
멀티 스레드(2) - 작업 스레드 개념 : Thread 클래스로부터 생성 2 (0) | 2024.10.28 |
멀티 스레드(2) - 작업 스레드 개념 : Thread 클래스로부터 생성 1 (1) | 2024.10.24 |