>Java >java지도 시간 >Java에 대한 고급 지식 - 스레드의 6가지 상태

Java에 대한 고급 지식 - 스레드의 6가지 상태

王林
王林앞으로
2019-11-26 11:44:593247검색

Java에 대한 고급 지식 - 스레드의 6가지 상태

스레드 상태

스레드에는 다음과 같은 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.sleepObject.waitThread.joinLock,tryLock 以及 Condition.await

Runnable(실행 가능)

Blocked (차단됨)

대기 중 (대기 중)

시간 제한 있음 (시간 제한 있음)

종료됨 (종료됨)

그 중 스레드의 현재 상태를 가져오려면 getState 메서드를 호출하면 됩니다.

Java 관련 동영상 추천: java 동영상

아래, 각 상태에 대한 설명

1. 새로 생성된 스레드(New)

Java에 대한 고급 지식 - 스레드의 6가지 상태

new Thread(r)를 사용할 때와 같이 new 연산자를 사용하여 스레드를 생성하면 스레드가 아직 실행을 시작하지 않았으며 스레드의 코드도 실행을 시작하지 않았습니다. . 이 시점에서는 New 상태가 됩니다.

2. Runnable 스레드(Runnable)

🎜🎜스레드에서 start() 메소드를 실행하면 스레드가 시작됩니다. 그러나 실행 가능 상태의 스레드는 운영 체제의 타임 슬라이스 스케줄링에 따라 실행될 수도 있고 실행되지 않을 수도 있습니다. 선점형 스케줄링 시스템은 실행할 각 스레드에 시간 조각을 할당합니다. 시간 조각을 모두 사용한 후 운영 체제는 해당 스레드의 실행 권한을 박탈하고 우선 순위에 따라 실행할 다음 스레드를 선택합니다. 🎜🎜🎜3.Blocked,waiting,Timedwaiting(Blocked,waiting,Timedwaiting)🎜🎜🎜스레드가 차단 및 대기 상태에 있으면 아무런 작업도 수행하지 않고 코드도 실행하지 않습니다. 운영 체제가 이를 다시 활성화할 때까지. 🎜🎜스레드가 내부 개체 잠금을 획득하려고 시도하고 다른 스레드가 잠금을 보유하면 스레드는 차단 상태에 진입합니다. 다른 스레드가 잠금을 해제하고 스레드 스케줄러가 스레드가 이를 보유하도록 허용하면 스레드는 차단 상태가 됩니다. 비 차단. 🎜🎜스레드가 다른 스레드가 스케줄러에 조건을 알리기를 기다리면 대기 상태로 들어간 후 Object.wait 메서드 또는 Thread.join 메서드를 호출하는 상황이 발생합니다. 차단된 상태와 대기하는 상태에는 큰 차이가 있습니다. 🎜🎜 여러 메서드에는 시간 초과 매개변수가 있습니다. 호출하면 스레드가 제한 시간이 만료되거나 적절한 알림을 받을 때까지 유지되는 시간 제한 대기 상태로 전환됩니다. 시간 초과 매개변수가 있는 메서드에는 Thread.sleepObject.wait, Thread.join, Lock,tryLockCondition.await의 시간 제한 버전입니다. 🎜🎜🎜4. 스레드 종료 🎜🎜🎜스레드 종료에는 두 가지 이유가 있습니다. 🎜🎜🎜실행 완료 후 run() 메서드가 정상적으로 종료되었기 때문입니다.🎜🎜🎜🎜잡히지 않은 예외로 인해 run 메서드가 종료되었습니다. 예상치 못한 죽음🎜 🎜🎜🎜5. 요약🎜🎜🎜🎜🎜🎜추천 관련 기사 및 튜토리얼: 🎜Java 프로그래밍 소개🎜🎜

위 내용은 Java에 대한 고급 지식 - 스레드의 6가지 상태의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제