앞서서 작업 스레드를 사용하지 않고 비프음을 내는 예제를 살펴보았었습니다.
import java.awt.Toolkit;
public class ExampleMain {
public static void main(String[] args) {
Toolkit toolkit = Toolkit.getDefaultToolkit();
for(int i = 0; i < 5; i++) {
toolkit.beep();
try {
Thread.sleep(500);
} catch (Exception e) {}
}
for(int i = 0; i < 5; i++) {
System.out.println("띵~");
try {
Thread.sleep(500);
} catch (Exception e) {}
}
}
}
위의 예제는 [메인 스레드]만을 사용한 예제라는 것을 이제 이해하셨을 겁니다. 위와 똑같은 작업을 [작업 스레드]까지 사용해서 비프 사운드와 텍스트 "띵~"이 동시에 출력되도록 만들어 보겠습니다.
// BeepTask.java
import java.awt.Toolkit;
public class BeepTask implements Runnable {
public void run() {
Toolkit toolkit = Toolkit.getDefaultToolkit();
for(int i = 0; i < 5; i++) {
toolkit.beep();
try {
Thread.sleep(500);
} catch(Exception e) {}
}
}
}
// ExampleMain.java
// 메인 스레드
import java.awt.Toolkit;
public class ExampleMain {
public static void main(String[] args) {
Runnable beepTask = new BeepTask();
Thread thread = new Thread(beepTask);
thread.start();
for(int i = 0; i<5; i++ ) {
System.out.println("띵~");
try { Thread.sleep(500); } catch(Exception e) {}
}
}
}
위와 같이 메인 스레드를 실행하게 되면 "띵~"이라는 텍스트와 비프음이 동시에 하나씩 출력되는 것을 확인할 수 있습니다.
이번에는 ExampleMain 파일 내에서 익명 객체와 람다식을 사용해서 작업 스레드를 선언하는 예제를 살펴보겠습니다. 위의 예제에서 Runnable beepTask = new BeepTask( ); 라인을 삭제하고, 익명 객체로 run( )을 선언해 보겠습니다.
import java.awt.Toolkit;
public class ExampleMain {
public static void main(String[] args) {
Thread thread = new Thread(new Runnable() {
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) {}
}
}
}
이번엔 위의 예제를 람다식으로 표현해 보겠습니다.
import java.awt.Toolkit;
public class ExampleMain {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
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) {}
}
}
}
'Programming > JAVA' 카테고리의 다른 글
멀티 스레드(2) - 작업 스레드 개념 : Thread 하위 클래스로부터 생성 2 (0) | 2024.10.31 |
---|---|
멀티 스레드(2) - 작업 스레드 개념 : Thread 하위 클래스로부터 생성 1 (0) | 2024.10.29 |
멀티 스레드(2) - 작업 스레드 개념 : Thread 클래스로부터 생성 1 (1) | 2024.10.24 |
멀티 스레드(1) - 멀티 스레드 개념 : 프로세스와 스레드 2 (0) | 2024.10.22 |
멀티 스레드(1) - 멀티 스레드 개념 : 프로세스와 스레드 1 (0) | 2024.10.21 |