Thread
- 생성
- start()
- sleep()
- stop() 사용 금지 -> 직접 구현 권장 : stop() 스레드 종료 , suspend() 스레드 일시 정지, resume() 일시중지 스레드 재시작
- interrupt() : interrupted(), isInterrupted()
- yield() : 스레드가 자신에게 주어진 실행시간을 모두 쓰지 않고, 다른 스레드에게 양보한다. -> 응답성을 높이기 위해 사용
sleep() Method
- sleep(long millisecond) : 일정 시간동안 Thread를 중지 시킨다.
- 지정된 시간 후 자동으로 실행 대기 상태가 된다.
- 일시 정지 상태에서 Interrupt() 호출 시, InterruptException이 발생하면서 깨어난다.
- static method
join() Method
- 스레드는 각자 독립적으로 실행되지만, 다른 스레드가 종료된 이후 실행해야하는 경우가 있다.
- 실행 대기 상태로 가기 위해서는 join() 메소드를 멤버로 가지는 스레드가 종료되거나, 매가 값으로 주어진 시간이 지나야 한다.
- join()에 인자를 주지 않는 경우, 호출하는 스레드가 무한히 기다리는 상황이 생길 수 있다. -> ex. thread.join(100);
- insatnce method

상태 전이도 - sleep()

상태 전이도 - yield()
- 우선순위가 동일한 다른 스레드에게 실행을 양보해주고 실행 대기 상태로 이동
- 프로그램의 응답성을 높여준다.

상태 전이도 - join()

interrupt() Method
- stop() : 스레드 강제 중지, 편하지만 deprecated(사용금지)
- strat() : 스레드 시작
Thread 실행 후, 작업이 끝나기 전에 해당 Thread를 중지 시키고 싶은 경우
- interrupt() 이용
- 직접 중지 시키지 않고, 스레드의 내부 상태(Interrupted state)를 변경 시켜준다.
Thread Interrupt Method
1. interrupted() // static : 현재 실행중인 스레드가 Interrupt가 걸렸는지 알려준다.
- 상태 값 조사 후, false로 값 변경
- 2번과 다르게 값 변경이 이뤄지기 때문에 주의해서 사용해준다.
2. isInterrupted() // non static : 특정 스레드가 Interrupt가 잡혔는지 알려준다.
- 현재 상태 값만 return true or false

'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] 접근 제어자, 래퍼 클래스, 제너릭, 컬렉션, 스트림, 람다식, Optional (0) | 2022.10.02 |
---|---|
[Java] JDBC(Java Database Connectivity), Connection pool (0) | 2022.07.21 |
[Java] 스레드 생성 방법 - extends vs runnable (0) | 2022.07.17 |
[Java] 스레드 풀(ThreadPool) (0) | 2022.07.17 |
[Java] 스레드의 동기화 synchronized (0) | 2022.07.17 |