重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
今天就跟大家聊聊有关java中的线程状态有几种,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
目前创新互联公司已为超过千家的企业提供了网站建设、域名、网页空间、网站改版维护、企业网站设计、辽阳网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。线程的状态
线程有如下6种状态:
New
(新创建 )
Runnable
(可运行)
Blocked
(被阻塞)
Waiting
(等待)
Timed waiting
(计时等待)
Terminated
(被终止)
其中,要获取一个线程当前的状态,可以调用getState 方法。
下面,对每种状态进行解释
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
的计时版。
4.被终止的线程
线程终止有两种原因:
因为run()方法执行完毕正常退出
因为一个没有捕获的异常而终止了run方法导致意外死亡
5.总结
看完上述内容,你们对java中的线程状态有进一步的了解吗?如果还想了解更多相关内容,欢迎关注创新互联成都网站设计公司行业资讯频道,感谢各位的阅读。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。