스레드 상태
스레드에는 다음과 같은 6가지 상태가 있습니다.
New
(새로 생성됨) New
(新创建 )
Runnable
(可运行)
Blocked
(被阻塞)
Waiting
(等待)
Timed waiting
(计时等待)
Terminated
(被终止)
其中,要获取一个线程当前的状态,可以调用getState 方法。
java相关视频推荐:java视频
下面,对每种状态进行解释
1.新创建线程(New)
当我们使用new操作符来创建了一个线程时,如使用new Thread(r)时,线程还未开始运行,线程中的代码也没有开始执行,此时就成为New状态。
2.可运行线程(Runnable)
当我们对一个线程执行start()方法后,就会启动该线程。但是注意,一个处于可运行状态的线程可能正在运行也可能没有运行,这时取决于操作系统的时间片调度。抢占式调度系统会给每一个线程分配一个时间片来运行,在时间片使用完后,操作系统就会剥夺它运行的权力,并更根据优先级选择下一个要运行的线程。
3.被阻塞、等待状态(Blocked、waiting、Timed waiting)
当一个线程处于阻塞和等待状态时,它不做任何工作,也不执行任何代码。直到操作系统重新激活它。
当一个线程试图获取一个内部对象锁,而这个锁又被其它线程持有时,该线程就进入阻塞状态,当其它线程释放这个锁后,并且线程调度器允许该线程持有它时,该线程将会变成非阻塞状态。
当线程等待另一个线程通知调度器一个条件时,它自己就进入等待状态,再调用Object.wait方法或者Thread.join方法时,就会出现这种情况。被阻塞状态和等待状态时大有不同的。
有几个方法有一个超时参数。调用它们导致线程进入计时等待状态这一状态将一直保存到超时期满或者接收到适当的通知。带有超时参数的方法有:Thread.sleep
和 Object.wait
、Thread.join
、 Lock,tryLock
以及 Condition.await
Runnable
(실행 가능) Blocked
(차단됨)
대기 중
(대기 중)
시간 제한 있음
(시간 제한 있음) 종료됨
(종료됨)
Java 관련 동영상 추천: java 동영상
아래, 각 상태에 대한 설명
1. 새로 생성된 스레드(New)Thread.sleep
및 Object.wait
, Thread.join
, Lock,tryLock
및 Condition.await
의 시간 제한 버전입니다. 🎜🎜🎜4. 스레드 종료 🎜🎜🎜스레드 종료에는 두 가지 이유가 있습니다. 🎜🎜🎜실행 완료 후 run() 메서드가 정상적으로 종료되었기 때문입니다.🎜🎜🎜🎜잡히지 않은 예외로 인해 run 메서드가 종료되었습니다. 예상치 못한 죽음🎜 🎜🎜🎜5. 요약🎜🎜🎜🎜🎜🎜추천 관련 기사 및 튜토리얼: 🎜Java 프로그래밍 소개🎜🎜위 내용은 Java에 대한 고급 지식 - 스레드의 6가지 상태의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!