안녕하세요~~ thread (쓰레드) 의 기본적인 구조를 알아본뒤 이번엔 join 에 대해 알아보겠습니다.
바로 아래 예제를 보면서 설명을 하겠씁니다.
public class ThreadJoin {
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName() + "start");
Runnable r = new MyRunnable();
Thread thread = new Thread(r);
thread.start();
System.out.println(Thread.currentThread().getName() + "end");
}
}
class MyRunnable implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("쓰레드1단계");
thread2();
}
public void thread2() {
System.out.println("쓰레드2단계");
thread3();
}
public void thread3() {
System.out.println("쓰레드3단계");
}
}
위 코드의 실행 결과는
이렇게 나옵니다.!!!!
우리가 알기론 메인이 끝나면 모든게 종료되는걸로 알고있는데 쓰레드는 그렇지 않습니다.. 메인이 종료되어도 백그라운드에서 돌아가기 때문입니다.
하지만 이런 쓰레드도 join(조인)을 이용하여 제어를 할 수 있는데요..
public class ThreadJoin {
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName() + "start");
Runnable r = new MyRunnable();
Thread thread = new Thread(r);
thread.start();
try {
thread.join();
} catch (Exception e) {
// TODO: handle exception
}
System.out.println(Thread.currentThread().getName() + "end");
}
}
class MyRunnable implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("쓰레드1단계");
thread2();
}
public void thread2() {
System.out.println("쓰레드2단계");
thread3();
}
public void thread3() {
System.out.println("쓰레드3단계");
}
}
이와같이 join을 사용한다면 해당 쓰레드가 종료되기까지 기다렸다가 다음으로 넘어갑니다!!
그래서
이와같은 결과를 얻을수 있습니다.
'Java' 카테고리의 다른 글
[JAVA]자바 문자열 자르기(split,메타문자 이스케이프) (1) | 2018.06.19 |
---|---|
[자바]채팅프로그램 만들기 (3) | 2017.08.17 |
[자바]쓰레드(Thread) (0) | 2017.08.10 |
[자바](AWT)+member/anonymous innerClass (1) | 2017.08.10 |
[자바](AWT)간단한 구조 (0) | 2017.08.10 |