프로그래밍 정리/자바

Thread Join - 쓰레드가 작동할 경우 끝날 때까지 기다려주고 다음 명령문을 실행.

주누다 2013. 7. 9. 23:49
반응형

Join

- 자바의 쓰레드가 끝날때까지 기다려주는 join() 메소드

-> 자바의 쓰래드는 게임과 네트워크 프로그래밍에서 중추적인 역할을 담당

-> 쓰레드가 끝날 때까지 기다려줌.


==============================================================================================



public class AddThread extends Thread{

int a;

int b;

int sum;

public AddThread(int x, int y) {

// TODO Auto-generated constructor stub

a = x;

b = y;

}

@Override

public void run() {

// TODO Auto-generated method stub

for(int i=a; i<=b; i++){

sum = sum+i;

}

}

int getSum(){

return sum;

}


}




public class Test50 {


public static void main(String[] args) throws InterruptedException {

AddThread at = new AddThread(0, 100);

System.out.println(at.isAlive()); // 쓰레드 작동중인지 알림

at.start(); // 쓰레드 시작

System.out.println(at.isAlive());

// at.join();

at.join();

System.out.println(at.getSum()); // 0부터 100까지 더한 값

System.out.println(at.isAlive());

}

}


===============================================================================================


- isAlive() 메소드는 말그대로 프로그램에서 쓰레드가 살아서 움직이고 있는지 테스트   

-> 작동 중이면 true, 아니라면 false


- join() 메소드는 이런 쓰레드가 작동할 경우 끝날 때까지 기다려주고 다음 명령문을 실행.

- 쓰레드만 start() 메소드로 작동시키고 join() 메소드 없이 하면 결과가 제대로 나오지 않음.

-> at 쓰레드가 미쳐 계산하기도 전에 메인메소드(main 쓰레드)가 다음 명령문을 실행해 버림.


- join() 메소드

-> void join() : 쓰레드가 끝날 때까지 기다림

-> void join(long millis) : 쓰레드를 1/1000초만큼 기다림

-> void join(long millis, int nanos) : 쓰레드를 (1/1000)+(1/10000000)초만큼 기다림




반응형

'프로그래밍 정리 > 자바' 카테고리의 다른 글

Object class  (0) 2013.07.11
Multi Thread(멀티쓰레드)  (0) 2013.07.10
Runnable, NotRunnable, Dead  (0) 2013.07.07
쓰레드(Thread)  (0) 2013.07.06
인터페이스에서 사용할 수 있는 멤버 변수  (0) 2013.06.19