본문 바로가기
프로그래밍/자바의 정석 기초편 코드 분석

자바의 정석 기초편 코드 분석 135(예제 13-11)

by 리드민 2023. 9. 26.
반응형

[ ] 자바의 정석 기초편 카테고리
chapter 13 쓰레드

chapter 13-29 join()과 yield() 예제
예제 13-11

[ ] 코드 분석
1. 원본 코드

class Ex13_11 {
	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()
        												- Ex13_11.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()
}

 

2. 해석본

class Ex13_11 {
// Ex13_11 클래스 선언
	static long startTime = 0;
    // long형 정적변수 startTime에 0을 저장
    
    public static void main(String args[]) {
    // 접근제어자 public으로 메모리에 상주하게 리턴값이 없이 main 메서드 선언
    	ThreadEx11_1 th1 = new ThreadEx11_1();
        // ThreadEx11_1 클래스의 인스턴스 th1 선언
        ThreadEx11_2 th2 = new ThreadEx11_2();
        // ThreadEx11_2 클래스의 인스턴스 th2 선언
        th1.start();
        th2.start();
        startTime = System.currentTimeMillis();
        
        // try-catch 문 선언
        try {
        	th1.join(); // main쓰레드가 th1의 작업이 끝날 때까지 기다린다.
            th2.join(); // main쓰레드가 th2의 작업이 끝날 때까지 기다린다.\
        } catch(InterruptedException e) {}
        
        System.out.print("소요시간:" + (System.currentTimeMillis()
        												- Ex13_11.startTime());
   } // main
}

class ThreadEx11_1 extends Thread {
// Thread를 상속하는 ThreadEx11_1 클래스 선언
	public void run() {
    // 접근제어자 public이고 리턴값이 없는 메서드 run() 선언
    	for(int i=0; i < 300; i++) {
        // for문 선언
        	System.out.print(new String("-"));
        }
    } // run()
}

class ThreadEx11_2 extends Thread{
// Thread 클래스를 상속하는 ThreadEx11_2 클래스 선언
	public void run() {
    // 접근제어자 public이고 리턴값이 없는 메서드 run() 선언
    	for(int i=0; i < 300; i++) {
        	System.out.print(new String("|"));
        }
    } // run()
}
반응형