>Java >java지도 시간 >알고 계셨나요? Java의 스레드에는 실제로 6가지 상태가 있습니다.

알고 계셨나요? Java의 스레드에는 실제로 6가지 상태가 있습니다.

php是最好的语言
php是最好的语言원래의
2018-08-06 14:01:241630검색

먼저 인터넷에 언급된 5가지 상태는 오해의 소지가 있다는 점을 말씀드립니다. Java의 스레드에는 실제로 6가지 상태가 있습니다. "5개 상태"라는 용어는 실제로 초기 프로세스의 상태입니다.

초기 프로세스 상태:

여기서 소위 "프로세스상태"는 초기 "단일 스레드프로세스" 상태를 나타냅니다.

현재 일반적인 "멀티 스레드 프로세스"의 경우 "프로세스 상태"에 대해 이야기하는 것은 분명히 의미가 없습니다. 또는 직접적으로 "스레드 상태"에 대해 이야기해야 합니다. 그러나 "프로세스 상태"와 "스레드 상태"가 여전히 혼동되는 경우가 있습니다.

일부 시스템에서는 스레드를 "경량 프로세스"라고 부르므로 우리는 여전히 "프로세스 상태"에 대해 이야기하고 있습니다.

때로는 "프로세스"나 "스레드"라고 부르지도 않고 "작업"이나 "작업"이라고 부르기도 합니다.

기존 실행 상태와의 차이점

어떤 사람들은 종종 Java 스레드 상태에 실행 상태가 없다고 생각합니다. 이는 실제로 두 가지 다른 수준의 상태를 혼동합니다. Java 스레드 상태에는 소위 실행 상태가 없으며 실행 가능 상태에는 실행 상태가 포함됩니다.

JVM에서 이 두 상태 사이에 구별이 없는 이유는 무엇일까요?

현재의 time-sharing(time-sharing)multi-task(multi-task) 운영 체제 아키텍처는 일반적으로 소위 "time slicing(시간 퀀텀 또는 타임 슬라이스)" 방법 선점형을 사용합니다. (선점형) 라운드 로빈 스케줄링(라운드 로빈 스타일).

이 시간 조각은 일반적으로 매우 작습니다. 스레드는 한 번에 최대 10-20ms 동안만 실행될 수 있으며(실행 상태에 있음) 시간 조각은 그 이후입니다. , 스위치 다운되어 다시 스케줄링을 기다리기 위해 스케줄링 대기열의 끝에 배치됩니다. (즉, 준비 상태로 돌아감)

보통 Java의 스레드 상태는 모니터링에 사용됩니다. 스레드가 너무 빨리 전환되면 준비 상태와 실행 중 상태를 구별하는 것이 별 의미가 없습니다.

오늘날의 주류 JVM 구현은 모두 Java 스레드를 운영 체제의 기본 스레드에 하나씩 매핑하고, 가상 머신 수준에서 볼 수 있는 상태는 기본적으로 기본 상태의 매핑 및 패키징입니다. . JVM 자체는 실질적인 스케줄링을 수행하지 않으며 기본 준비 및 실행 상태를 매핑하는 것은 별 의미가 없습니다. 따라서 실행 가능 상태로 통합하는 것이 좋습니다.

다음은 Thread.State 소스 코드의 주석에 있는 단어입니다.

이러한 상태는 운영 체제 스레드 상태를 반영하지 않는 가상 머신 상태입니다.

이러한 상태는 가상 머신 상태이며 어떤 운영 체제 스레드 상태도 반영하지 않습니다 .

RUNABLE 상태에 대한 참고 사항:

실행 가능 상태의 스레드는 Java 가상 머신에서 실행 중이지만 프로세서와 같은 운영 체제의 다른 리소스를 기다리고 있을 수 있습니다

실행 가능 상태의 스레드가 실행 중입니다. Java 가상 머신에서 실행되지만 프로세서와 같은 운영 체제의 다른 리소스를 기다리고 있을 수도 있습니다.

Java의 RUNNABLE 상태에는 실제로 Ready 및 Running 상태가 포함되므로 인터넷상의 부정확한 설명은 완전히 무시할 수 있습니다. 이러한 질문에 대한 답은 소스 코드와 javadoc에 있는 경우가 많습니다.

6개 중 상태:
NEW(신규)
RUNNABLE(실행 가능)
BLOCKED(차단됨)
WAITING(무한 대기)
TIMED_WAITING(제한된 대기)
TERMINATED(종료됨)

관련 기사:

Java 예제 - 받기 스레드 상태

Java 스레드의 여러 상태 공유

위 내용은 알고 계셨나요? Java의 스레드에는 실제로 6가지 상태가 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.