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 |