프로그래밍/JAVA
Thread 간단 코드와 관련 메소드
라롸
2020. 2. 5. 17:53
-
Thread 클래스를 상속받아 스레드 실행
public class Task extends Thread{
@Override
public void run() {
//스레드 작업 내용
}
public static void main(String[] args) {
try {
Task t1 = new Task();
Task t2 = new Task();
t1.start(); // 스레드를 실행시키기
t2.start();
}catch (Exception e) {
e.printStackTrace();
}
}
}
- Runnable 인터페이스를 상속받아 스레드 실행
public class Task implements Runnable{
@Override
public void run() {
// 스레드 작업 내용
}
public static void main(String[] args) {
Task t1 = new Task();
Task t2 = new Task();
// t1.start(); // X
Thread t1 = new Thread(t1);
Thread t2 = new Thread(t2);
t1.start();
t2.start();
}
}
-
스레드 상태 제어 메소드
메소드 | 설명 |
interrupt() | 일시 정지 상태의 스레드에서 예외를 발생시켜, 예외 처리 코드에서 실행 대기 상태로 가거나 종료 상태로 갈 수 있도록 한다. |
notify() / notifyAll() |
동기화 블록 내에서 wait() 메소드에 의해 일시 정지 상태에 있는 스레드를 실행 대기 상태로 만든다. |
sleep(long millis) / sleep(long millis, int nanos) |
주어진 시간 동안 스레드를 일시 정지 상태로 만든다. 시간이 지나면 자동적으로 실행 대기 상태가 된다. |
join() / join(long millis) / join(long millis, int nanos)
|
join() 메소드를 호출한 스레드는 일시 정지 상태가 된다. 실행 대기 상태로 가려면, join 메소드를 멤버로 가지는 스레드가 종료되거나, 매개값으로 주어진 시간이 지나야 한다. |
wait() / wait(long millis) / wait(long millis, int nanos) |
동기화 브록 내에서 스레드르 일시정지 상태로 만든다. 매개값으로 주어진 시간이 지나면 자동적으로 실행 대기 상태가 된다. 시간이 주어지지 않으면 notify 메소드에 의해 실행 대기 상태로 갈 수 있다. |
yield() | 실행 중에 우선순위가 동일한 다른 스레드에게 실행을 양보하고 실행 대기 상태가 된다. |