Notice
Recent Posts
Recent Comments
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

main 쓰레드 본문

Java/JAVA3

main 쓰레드

빌드이너프 2023. 8. 3. 08:59

main 쓰레드

main 메서드의 코드를 수행하는 쓰레드

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, world");
    }
}

 

 

쓰레드는 '사용자 쓰레드'와 '데몬 쓰레드' 두 종류가 있다

실행 중인 사용자 쓰레드가 하나도 없을 때 프로그램은 종료된다

 

main 메서드가 종료되어도 run 메서드가 남아있기 때문에 프로그램은 종료되지 않는다

 

코드

try문 주석처리: 소요시간이 바로 찍힌다

class ThreadTest {
    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() - ThreadTest.startTime));
    } // main
}

class ThreadEx11_1 extends Thread {
    public void run() {
        for(int i=0; i < 300; i++) {
            System.out.print(new String("-"));
        }
    } // run()
}

class ThreadEx11_2 extends Thread {
    public void run() {
        for(int i=0; i < 300; i++) {
            System.out.print(new String("|"));
        }
    } // run()
}

 

 

try 주석 해제: main 메서드가 다른 두 개의 메서드가 끝날 때까지 기다림

class ThreadTest {
    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() - ThreadTest.startTime));
    } // main
}

class ThreadEx11_1 extends Thread {
    public void run() {
        for(int i=0; i < 300; i++) {
            System.out.print(new String("-"));
        }
    } // run()
}

class ThreadEx11_2 extends Thread {
    public void run() {
        for(int i=0; i < 300; i++) {
            System.out.print(new String("|"));
        }
    } // run()
}