자바
[스레드] 2. 작업 스레드 생성과 실행 - 1
devjones
2021. 12. 29. 21:27
몇 개의 작업을 병렬로 실행할지 결정
메인작업: 메인스레드(프로그램 시작)
작업1: 스레드1(네트워킹)
작업2: 스레드2(드로잉)
작업 스레드 생성방법
-> Thread 클래스로부터 직접 생성
-> Thread 하위 클래스로부터 생성
Thread 클래스로부터 직접 생성
class Task implements Runnable {
@Override
public void run() {
// 스레드가 실행할 코드;
}
}
위 작업을 실행하는 방법1)
Runnable task = new Task();
Thread thread = new Thread(task);
thread.start(); // 작업실행
방법2)
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
// 스레드가 실행할 코드;
}
});
thread.start(); // 작업실행
방법3)
Thread thread = new Thread(() -> {
// 스레드가 실행할 코드;
});
thread.start(); // 작업실행
예제
package main;
import java.awt.*;
public class BeepPrintExample1 {
public static void main(String[] args) {
// 비프음을 5번 반복해서 소리나게 하는 작업
Toolkit toolkit = Toolkit.getDefaultToolkit();
for (int i = 0; i < 5; i++) {
toolkit.beep();
try {
Thread.sleep(500); // 스레드 일시정지
}catch (InterruptedException e) {
e.printStackTrace();
}
}
// "띵" 문자열을 5번 출력하는 작업
for (int i = 0; i < 5; i++) {
System.out.println("띵");
try {
Thread.sleep(500); // 스레드 일시정지
}catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
위 예제는 비프음5번 후, 띵문자열을 5번 출력한다.
비프음과 동시에 띵문자열을 출력해보자.
package main;
import java.awt.*;
public class BeepTask implements Runnable {
@Override
public void run() {
// 비프음을 5번 반복해서 소리나게 하는 작업
Toolkit toolkit = Toolkit.getDefaultToolkit();
for (int i = 0; i < 5; i++) {
toolkit.beep();
try {
Thread.sleep(500); // 스레드 일시정지
}catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package main;
import java.awt.*;
public class BeepPrintExample2 {
public static void main(String[] args) {
Runnable beepTask = new BeepTask();
Thread thread = new Thread(beepTask);
thread.start();
// Thread thread = new Thread(new Runnable() {
// @Override
// public void run() {
// // 비프음을 5번 반복해서 소리나게 하는 작업
// Toolkit toolkit = Toolkit.getDefaultToolkit();
// for (int i = 0; i < 5; i++) {
// toolkit.beep();
//
// try {
// Thread.sleep(500); // 스레드 일시정지
// }catch (InterruptedException e) {
// e.printStackTrace();
// }
// }
// }
// });
// Thread thread = new Thread(() -> {
// // 비프음을 5번 반복해서 소리나게 하는 작업
// Toolkit toolkit = Toolkit.getDefaultToolkit();
// for (int i = 0; i < 5; i++) {
// toolkit.beep();
//
// try {
// Thread.sleep(500); // 스레드 일시정지
// }catch (InterruptedException e) {
// e.printStackTrace();
// }
// }
// });
// "띵" 문자열을 5번 출력하는 작업
for (int i = 0; i < 5; i++) {
System.out.println("띵");
try {
Thread.sleep(500); // 스레드 일시정지
}catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}