반응형
1. 일시정지(sleep)
주어진 시간 동안 일시 정지 상태(TIMED_WAITING)가 되고, 다시 실행 대기 상태(RUNNABLE)로 돌아간다.
일시정지 상태에서 주어진 시간이 되기 전에 interrupt() 메소드가 호출되면 InterruptedException이 발생 -> catch에서 실행 대기 상태로 가거나 종료 상태로 갈 수 있도록 한다.
2. 실행 양보(yield)
실행 대기 상태로 돌아가고, 동일한 우선순위 또는 높은 우선순위를 갖는 다른 스레드가 실행 기회를 가질 수 있게 한다.
2. 다른 스레드의 종료를 기다림(join)
다른 스레드가 종료될 때까지 기다렸다가 실행함
3. wait(), notify(), notifyAll()
- notify() : 공유객체가 한 스레드가 작업을 완료하면 notify()메소드를 호출해서 일시정지 상태에 있는 한 개의 스레드를 실행대기 상태로 만든다.
- wait() : 다른 스레드를 실행대기 상태로 만들고 자신은 wait()로 일시정지 상태로 만든다.
- notifyAll() : wati()에 의해 이시 정지된 모든 스레드들을 실행 대기 상태로 만든다.
- 이 메소드들은 동기화 메소드 또는 동기화 블록 내에서만 사용할 수 있다.
- notify와 wait를 사용할 때 synchronized 를 사용하지 않으면 java.lang.IllegalMonitorStateException이 발생함.
Getter -> 데이터가 없으면 wait하고 데이터가 set 되길 기다림 / 데이터가 있으면 반환하고 null로 만듦
Setter -> 데이터가 없으면 data를 set하고 데이터가 있으면 wait하고 get하길 기다림
반응형
'코딩 관련 > Java' 카테고리의 다른 글
[JAVA] itext로 html 을 pdf로 변환하기. convert html to pdf using itext7 / java html to pdf (2) | 2021.03.19 |
---|---|
[JAVA] InputStream (0) | 2021.03.16 |
[JAVA] 임계영역 지정 : 동기화(synchronized) 메소드와 동기화 블록 (0) | 2021.03.12 |
[JAVA] Thread 생성. 스레드 만들기 (0) | 2021.03.12 |
[JAVA] Exception, throws, throw, printStackTrace 등 (0) | 2021.03.07 |