2022.10.17
java.lang 패키지 계속
Thread 클래스
스레드
class ThreadExtends extends Thread {
public ThreadExtends() {
}
public ThreadExtends(String name) {
super(name);
}
@Override
public void run() {
int cnt = 0;
while(cnt < 3) {
try {
if (cnt == 0) System.out.println("스레드 실행 중");
if (cnt == 2) System.out.println("스레드 끝");
Thread.sleep(1000);
cnt++;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
스레드 실행
ThreadExtends t = new ThreadExtends(); //ThreadExtends는 Thread를 상속받은 클래스
System.out.println("---------- Main() Begin ---------");
t.start();
System.out.println("---------- Main End ---------");
/*
결과
---------- Main End ---------
스레드 실행 중
---------- Main End ---------
스레드 끝
*/
join()
: join()
은 호출한 곳에서 실행 중인 스레드가 종료될 때까지 기다림
ThreadExtends t2 = new ThreadExtends(); //ThreadExtends는 Thread를 상속받은 클래스
System.out.println("---------- Main End ---------");
t.start();
t.join(); // 스레드가 종료될 때까지 기다림
System.out.println("---------- Main End ---------");
/*
결과
---------- Main End ---------
스레드 실행 중
스레드 끝
---------- Main End ---------
*/
Thread와 Runnable 차이
스레드 우선 순위 설정
t4.setPriority(Thread.MAX_PRIORITY); // 10
t5.setPriority(Thread.MIN_PRIORITY); // 1
Runnable 인터페이스
Runnable 인터페이스를 구현하고 run() 메소드를 오버라이딩해 실행 내용을 구현함
class RunnableImplements implements Runnable {
@Override
public void run() {
int cnt = 4;
while(cnt < 7) {
try {
if (cnt == 0) System.out.println("스레드 실행 중");
if (cnt == 2) System.out.println("스레드 끝");
Thread.sleep(1000);
cnt++;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}