| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 스프링
- Spring
- 엘라스틱서치
- boot
- 인터페이스
- Git
- Web
- RCP
- 이펙티브
- MySQL
- 리뷰
- 백준
- 자바스크립트
- node
- javascript
- elasticsearch
- kibana
- jface
- 맛집
- 자바
- Spring Boot
- 후기
- effective
- java8
- java
- 독후감
- 알고리즘
- JPA
- nodejs
- error
- Today
- Total
wedul
쓰레드 개념정리 본문
쓰레드의 스케줄링과 관련된 메서드
void interrupt() : sleep()이나 join()에 의해 일시정지상태인 쓰레드를 실행대기 상태로 만든다.
void join(), join(long millis) : 지정된 시간동안 쓰레드가 실행되도록 한다. / 해당 쓰레드가 종료될때 까지 main 쓰레드는 대기한다.
void resume() : suspend()에 의해 일시정지상태에 있는 쓰레드를 실행대기상태로 만든다.
static void sleep(long miillis) : 지정된 시간 동안 쓰레드를 일시정지 시킨다. 시간이 지난후 다시 실행대기상태가 된다.
void stop() : .쓰레드를 즉시 종료신킨다.
void suspend() : 쓰레드를 일시정지 시킨다.
static void yield() : 실행중에 다른 쓰레드에게 양보하고 실행대기 상태가 된다.
쓰레드의 상태
NEW : 쓰레드가 생성되고 아직 START() 호출되지 않은 상태
RUNNABLE : 실행 중 또는 실행 가능한 상태
BLOCKED : 동기화블럭에 의해서 일시정지된 상태(LOCK이 풀릴 때까지 기다리느상태)
WATING, TIMED_WAITING : 쓰레드으 ㅣ작업이 종료되지는 않았지만 실행가능하지 않은 일시정지 상태
TERMINATED : 작업이 종료된 상태
응용
1. Thread t1과 t2가 동시에 실행될때 순차적으로 진행하고 싶을 경우
t1.start()
t2.start()
t1.join() // t1이 끝날때까지 기다린다.
2. 현재 실행 중인쓰레드를 일시 정지(sleep)시키거나 양보하고 싶을 경우(yield)의 경우에는
t1.sleep(1000), t1.yield()가 아니라 Thread.sleep(1000), Thread.yield를 사용해야 한다.
왜냐면 이 둘은 항상 현재 실행중인 쓰레드에 대해 작동하기 때문에 t1.sleep(1000)이라 했어도 실제 영향을 받는것은 main쓰레드 이기 때문이다.
'JAVA > Thread' 카테고리의 다른 글
| synchronous vs asynchronous (0) | 2016.12.24 |
|---|---|
| 멀티 스레드 (0) | 2016.12.21 |
| JAVA 데몬 스레드 소개 (1) | 2016.12.21 |
| synchronized 쓰레드 예제 프로그래밍 (0) | 2016.12.21 |
| Thread wait(), notify() 소개 (0) | 2016.12.21 |
