Java 스레드를 일시중지하고 다시 활성화하는 방법은 무엇입니까?
JAVA에서는 스레드가 start 메소드로 시작하고, sleep(time) 메소드로 일시정지하고, stop 메소드로 스레드를 정지하고, 스레드가 wait 메소드로 대기하는 방식이 있습니다. Java에서는 스레드가 다시 시작되지 않습니다. 스레드가 알림All() 또는 알림 메소드로 잠자거나 대기 중인 모든 스레드를 깨운다고만 말할 수 있습니다. 특정 매개변수에 대해서는 JDK 문서를 참조하세요.
자바 스레드의 수명주기는 대략 5가지 상태로 나눌 수 있습니다. 다음과 같습니다:
1. 신규(NEW): 새로운 스레드 객체가 생성됩니다.
2. 실행 가능(RUNNABLE): 스레드 객체가 생성된 후 다른 스레드(예: 메인 스레드)가 해당 객체의 start() 메서드를 호출합니다. 이 상태의 스레드는 실행 가능한 스레드 풀에 위치하며 CPU 사용 권한을 얻기 위해 스레드 스케줄링에 의해 선택되기를 기다리고 있습니다.
3. RUNNING: 실행 가능 상태의 스레드는 CPU 타임 슬라이스(timeslice)를 획득하고 프로그램 코드를 실행합니다.
4. BLOCKED: 차단된 상태는 스레드가 어떤 이유로 CPU를 사용할 권리를 포기한다는 것을 의미합니다. 즉, CPU 타임슬라이스를 포기하고 일시적으로 실행을 중지합니다. 스레드가 실행 가능 상태에 들어갈 때까지 CPU 타임슬라이스를 다시 획득하고 실행 상태로 이동할 기회가 있습니다. 차단 상황에는 세 가지 유형이 있습니다:?
(1) 차단 대기: 실행 중인 스레드가 o.wait() 메서드를 실행하고 JVM이 스레드를 대기 대기열에 넣습니다.
(2) 동기화 차단: 실행 중인 스레드가 객체의 동기화 잠금을 획득할 때 다른 스레드가 동기화 잠금을 점유하고 있으면 JVM은 스레드를 잠금 풀(잠금 풀)에 넣습니다.
(3) 기타 차단: 실행 중인 스레드가 Thread.sleep(long ms) 또는 t.join() 메서드를 실행하거나 I/O 요청을 발행하면 JVM은 차단 상태로 설정됩니다. . sleep() 상태가 시간 초과되거나, Join()이 스레드가 종료되거나 시간 초과될 때까지 기다리거나, I/O 처리가 완료되면 스레드는 실행 가능 상태로 돌아갑니다.
5. 죽음(DEAD): 스레드의 run() 및 main() 메서드 실행이 종료되거나 예외로 인해 run() 메서드가 종료되면 스레드는 수명 주기를 종료합니다. 죽은 스레드는 부활할 수 없습니다.