sleep과 yield 차이점
86
작성한 질문수 90
이 둘을 이해하는데 조금 어려워서 차이점 질문 겸 이렇게 이해하고 있는게 맞는지 또는 이해해도 되는지 질문드립니다.
sleep()과 ,yield() 공통점 : 둘 다 실행되면 다른 스레드에게 실행을 양보함
sleep()과 ,yield() 차이점
sleep(ms) : 실행되면 주어진 시간동안
TIMED_WATING상태가 된다. sleep이 실행된 스레드는 실행 스케쥴링에서 아예 빠진다. 따라서 해당 시간동안 전혀 실행되지 않는다.yield() : 호출되어도 계속해서
RUNNABLE상태를 유지한다. yield()가 호출되면 해당 스레드는 sleep과 달리 스케쥴링에 대기상태로 들어간다. 이 말은 스케쥴링에 있기 때문에 다시 곧바로 실행 될 수 있다.
예를들어 1000ms를 기준으로 비교하면 sleep()을 호출한 스레드는 1초동안 아무것도 못하지만, yield를 호출한 스레드는 1초동안 다른 얼마든지 곧바로 실행 될 수도 있고 몇번이든 실행 될 수 있다.
이렇게 차이점을 이해했습니다. 이게 맞는지 이렇게 이해해도 되는지 궁금합니다
감사합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
yoon6669님께서 설명하신 sleep()과 yield()의 차이점에 대한 이해가 전반적으로 맞습니다. 하지만 조금 더 명확하게 설명을 덧붙이겠습니다.
sleep(): 특정 시간 동안 스레드를 일시 정지 상태 (TIMED_WAITING)로 만듭니다. 이 동안 스레드는 CPU 자원을 전혀 사용하지 않고, 주어진 시간이 지나면 준비 상태로 돌아갈 수 있으며, 이 후에는 다시 스케쥴링 되어 실행될 수 있습니다. 다른 스레드가 먼저 실행 기회를 얻게 되는 것이 보장됩니다.
yield(): 현재 실행 중인 스레드가 CPU를 다른 스레드에게 양보하려고 시도합니다. 하지만, 이는 권고일 뿐 실제로 다른 스레드에게 CPU를 양보할지는 JVM의 스케쥴러에 달려 있습니다.
RUNNABLE상태를 유지하며, 다시 실행될 가능성이 큽니다. 즉, 다른 스레드가 CPU를 획득할 기회를 줄 수 있지만 보장되지는 않습니다.
따라서, sleep()은 실제로 스레드를 지정된 시간 동안 일시 정지 시키는 반면, yield()는 현재 스레드의 실행을 잠시 양보할 것을 권고하는 것이라고 이해하시면 됩니다.
모니터와 synchronized, ReentrantLock, 원자적연산 CAS관련해서 추가적으로 더 깊게 공부했는데 제가 이해한 것이 맞나요??
0
85
1
Future cancel기능을 사용했지만 interrupt가 발생하지 않을 때 어떻게 처리해야하나요?
0
73
2
2.스레드 생성과 실행 - 17P 그림 문의
0
74
2
자바 동시성 현업에서 사용예시가 궁금합니다
0
136
1
ReentrantLock 동작 원리에 대한 질문입니다.
0
84
1
synchronized 대신 join 을 사용하여 순서를 보장할 경우 해법이 아닌가요?
0
94
2
메모리 가시성 문제 질문
0
72
1
Future4-이유 질문
0
64
1
오타 제보
0
77
2
runnable 질문
0
95
2
자바가 아닌 다른 언어에서도
0
112
1
메모리 가시성 문제가 발생하는 이유
0
125
1
데몬스레드가 어떨 때 사용이 되는지 궁금합니다.
0
78
1
Future.cancel() 취소를 사용하는 예가 궁금합니다.
0
84
1
synchronized 와 인스턴스의 lock
0
91
2
synchronized 키워드만으로 메모리 가시성이 해결되는 이유가 궁급합니다.
0
63
1
[스레드 풀과 Executor 프레임워크1][문제와 풀이] `log("일부 작업이 실패했습니다.");` 실행되는 경우가 있을까요?
0
59
1
원자적 연산이 멀티스레드 상황에서 안전한 이유를 제대로 이해했는지 확인 부탁드립니다
0
67
2
자바 고급 1,2,3편 같이 진행해도 문제없나요
0
77
2
CPU 캐시 때문에도 잔액이 200원이 될 수 있나요?
0
105
2
synchronized 메서드와 join 관련 질문이 있습니다.
0
69
2
섹션 14. 115번 강의 내용 질문
0
83
2
교안에 있는 7페이지 데이터 영역
0
51
1
Executor 스레드 풀 관리 질문
0
108
2





