💡Thread의 사용 이유와 사용법
📘 프로그램 코드를 이용하면서 실행하는 하나의 실 혹은 제어의 개념.
멀티 쓰레드 구현
// Runnable 인터페이스를 이용해 Thread 부분 구현
public class MyRunnable implements Runnable {
//쓰레드 로직 부분 - 0 ~ 3 까지 숫자 생성
@Override
public void run() {
String threadName = Thread.currentThread().getName();
for (int i = 0; i < 3; i++) {
System.out.println("현재 쓰레드 : " + threadName + " - " + i);
}
}
}
//main 부분 구현
public static void main(String[] args) {
System.out.println("::: main 쓰레드 시작 ");
//이 구현체로는 실행로직 역할
MyRunnable myTask = new MyRunnable();
//쓰레드는 쓰레드 제어 역할만
Thread thread0 = new Thread(myTask);
Thread thread1 = new Thread(myTask);
//쓰레드 시작 부분 - run() 작업부분 실행
thread0.start();
thread1.start();
System.out.println("::: main 쓰레드 종료 ");
}
출력
::: main 쓰레드 시작
::: main 쓰레드 종료
현재 쓰레드 : Thread-1 - 0
현재 쓰레드 : Thread-1 - 1
현재 쓰레드 : Thread-0 - 0
현재 쓰레드 : Thread-0 - 1
현재 쓰레드 : Thread-1 - 2
현재 쓰레드 : Thread-0 - 2
join() 메서드 활용
//위의 main 부분에 join() 추가
public static void main(String[] args) {
System.out.println("::: main 쓰레드 시작 ");
//이 구현체로는 실행로직 역할
MyRunnable myTask = new MyRunnable();
//쓰레드는 쓰레드 제어 역할만
Thread thread0 = new Thread(myTask);
Thread thread1 = new Thread(myTask);
//쓰레드 시작 부분 - run() 작업부분 실행
thread0.start();
thread1.start();
try {
thread0.join();
thread1.join();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println("::: main 쓰레드 종료 ");
}
출력
::: main 쓰레드 시작
현재 쓰레드 : Thread-0 - 0
현재 쓰레드 : Thread-0 - 1
현재 쓰레드 : Thread-1 - 0
현재 쓰레드 : Thread-1 - 1
현재 쓰레드 : Thread-0 - 2
현재 쓰레드 : Thread-1 - 2
::: main 쓰레드 종료