Java
128. 싱글쓰레드와 멀티쓰레드, 쓰레드의 I_O블락킹 - 패스트캠퍼스 백엔드 부트캠프 3기
gkss2tpt
2025. 1. 6. 15:29
1. main쓰레드
- main메서드의 코드를 수행하는 쓰레드
- 쓰레드는 '사용자 쓰레드'(main)와 '데몬 쓰레드'(보조) 두 종료가 있다.
- 실행 중인 사용자 쓰레드가 하나도 없을 때 프로그램은 종료된다.
public class Ex02 {
static long startTime = 0;
public static void main(String[] args) {
ThreadEx11_1 th1 = new ThreadEx11_1();
ThreadEx11_2 th2 = new ThreadEx11_2();
th1.start();
th2.start();
startTime = System.currentTimeMillis();
try{
th1.join(); // main쓰레드가 th1의 작업이 끝날 때까지 기다린다.
th2.join(); // main쓰레드가 th2의 작업이 끝날 때까지 기다린다.
} catch (InterruptedException e) {}
System.out.print("소요시간:"+(System.currentTimeMillis()-startTime));
}
}
class ThreadEx11_1 extends Thread {
public void run() {
for (int i = 0; i < 300; i++) {
System.out.print(new String("-"));
}
}
}
class ThreadEx11_2 extends Thread {
public void run() {
for (int i = 0; i < 300; i++) {
System.out.print(new String("|"));
}
}
}
2. 쓰레드의 I/O블락킹(blocking) - 입출력시 작업중단
class ThreadEx6 {
public static void main(String[] args) {
String input = JOptionPane.showInputDialog("아무 값이나 입력하세요.");
System.out.println("입력하신 값은 " + input + "입니다.");
for(int i = 10; i > 0; i--) {
System.out.println(i);
try { Thread.sleep(1000); } catch(Exception e) {} // 카운트다운
}
}
}
- 멀티쓰레드
class ThreadEx7 {
public static void main(String[] args) {
ThreadEx7_1 th1 = new ThreadEx7_1();
th1.start();
String input = JOptionPane.showInputDialog("아무 값이나 입력하세요.");
System.out.println("입력하신 값은 " + input + "입니다.");
}
}
class ThreadEx7_1 extends Thread {
public void run() {
for(int i = 10; i > 0; i--) {
System.out.println(i);
try { Thread.sleep(1000); } catch(Exception e) {} // 카운트다운
}
}
}