Java 스레드는 생성되거나 소멸될 수 있으므로 스레드에는 수명 주기가 있으며 스레드의 수명 주기는 스레드의 6가지 상태로 설명할 수 있습니다.
Thread 클래스의 소스 코드에서 스레드의 6가지 상태를 확인할 수 있습니다.
#🎜 🎜##🎜 🎜#
6가지 상태는 다음과 같습니다.1 새로운 기능: 초기 상태, 스레드가 생성되고 start()가 호출되지 않습니다.
2. 실행 가능: 실행 상태. Java 스레드는 운영 체제에서 준비 및 실행 중이라는 두 가지 상태를 집합적으로 호출합니다.
3. 차단됨: 차단됨, 스레드가 대기 상태에 들어가고 스레드가 어떤 이유로 CPU 사용 권한을 포기합니다.
차단의 여러 상황:
A. 차단 대기: 실행 중인 스레드가 wait()를 실행하고 JVM이 현재 스레드를 대기 대기열에 넣습니다.
B. 동기 차단: 실행 중인 스레드가 객체의 동기화 잠금을 획득할 때 다른 스레드가 동기화 잠금을 점유하고 있는 경우 JVM은 현재 스레드를 잠금 풀에 넣습니다.
C. 기타 차단: 실행 중인 스레드가 sleep(), Join()을 실행하거나 IO 요청을 발행하면 JVM은 sleep()이 완료되면 현재 스레드를 차단 상태로 설정합니다. Join() 스레드가 종료되고 IO 처리가 완료된 후 스레드가 다시 시작됩니다.
4 대기 중: 대기 상태입니다.
5. timed_waiting: 타임아웃 대기 상태, 타임아웃 후 자동으로 반환됩니다.
6. 종료됨: 종료 상태, 현재 스레드가 실행을 완료했습니다.
스레드의 6가지 상태 간 전환:스레드가 인스턴스화되면 먼저 초기 상태, 즉 새로운 상태. 이때 쓰레드는 시작과 동시에 바로 실행되는 것이 아니라 운영체제가 스케줄링할 때까지 기다렸다가 실행한 후 start()를 호출하여 실행 상태, 즉 실행 가능 상태로 진입한다. 두 가지 상태가 포함됩니다. 이 두 상태는 운영 체제의 스케줄링에 따라 서로 변환될 수 있습니다. 실행 중인 스레드의 시간 조각이 CPU에 의해 선점되면 실행 중인 스레드가 차단 상태가 됩니다. 스레드가 잠금을 획득하고 실행 상태에 들어갈 때 동기화된 메서드 또는 동기화된 블록을 호출하여 상태를 유지합니다. 실행 중에 다른 메소드가 호출되면 대기 상태(waiting) 또는 타임아웃 대기 상태, 즉 timed_waiting으로 진입합니다. 런타임 상태. 스레드 실행이 완료되면 종료 상태, 즉 종료 상태로 들어갑니다.
참고: Locksupported는 JDK 1.6에서 제공하는 도구 클래스입니다. java.util.concurrent 패키지에서 제공되는 park 및 unpark 메서드는 wait 및 inform 메서드보다 더 유연합니다.
명령줄을 통해 스레드 상태 보기먼저 두 가지 명령을 소개합니다.
1. 현재 모든 Java 프로세스의 pid를 표시하기 위해 JDK 1.5에서 제공하는 명령을 사용하면 해당 프로세스 pid를 얻을 수 있습니다.
2. Jstack: Java 가상 머신과 함께 제공되는 스택 추적 도구로, 지정된 프로세스 pid 정보와 원격 디버깅 서비스의 Java 스택 정보를 인쇄할 수 있습니다.
특정 단계:터미널 또는 명령줄 도구를 열고 jps 명령을 입력하여 pid를 가져옵니다.
#🎜 🎜# 현재 프로세스에 대한 정보를 보려면 jstack pid를 입력하세요.PHP 중국어 웹사이트에는 무료 JAVA 입문 튜토리얼
이 많이 있습니다. 누구나 배울 수 있습니다!위 내용은 Java 스레드의 상태는 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!