摘要:本文主要介绍JAVA语言中的Java线程状态,线程状态分为以下几个状态,本文将会一一呈现出来,让你在JAVA语言里尽快踏上正规的步伐,从而迈向更高的领域。
New:创建了线程对象,但还没调用start()方法之前的状态;
Runnable:当NEW状态的线程调用start()方法后进入Runnable状态;
线程进入Runnable状态不代表会被cpu立即执行,处于该状态的线程需要等待系统调度执行run()方法才真正处于运行时,但注意的是Java线程里并没有Running状态;
Blocked:当线程需要等待锁释放时就会进入Blocked状态;
Waiting:当线程需要让自己等待进一步信号( go-ahead signal)来继续执行时,就会进入Waiting状态;有以下三种场景:
线程调用Object.wait()进入Waiting状态,其他的线程可以通过Object.notify()或Object.notifyAll()方法来唤醒处于Waiting状态的线程;
当线程通过调用其他线程的Thread.join()方法时,自己本身会进入Waiting状态:当join的线程执行完任务之后,会发送唤醒信号;
Thread waiting due to LockSupport.park()method being invoked on it: The waiting thread resumes when LockSupport.unPark() is called with the parked thread object as the parameter.
Timed_Waiting:当线程收到特殊的指示让线程进入特定时间的等待状态时,线程会进入Timed_Waiting状态;有以下几种情况会进入Timed_Waiting状态:
调用Thread.sleep()方法;
Threads being asked to wait for a permit for a specified amount of time using LockSuport.parkNanos() and LockSupport.parkUntil() methods.
调用Object.wait(long millis)或Thread.join(long millis, int manos)方法;
Terminated:当线程执行完run()方法后就会进入Terminated状态;
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言JAVA频道
喜欢 | 0
不喜欢 | 0
jeff
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号