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

 

 

+ Recent posts