网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

java线程有哪几种状态

这篇文章的知识点包括:java线程的简介、java线程的状态、java线程状态之间的转换以及查看java线程状态的方法,阅读完整文相信大家对java中的线程状态有了一定的认识。

网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、重庆小程序开发公司、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了嘉禾免费建站欢迎大家使用!

Java线程既可以创建,也可以销毁,所以线程是有生命周期的,而线程的生命周期就可以用线程的六种状态来描述。

从Thread类的源码中可以看出线程一共有6种状态:

java线程有哪几种状态

这六种状态分别是:

1. New:初始状态,线程被创建,没有调用start()。

2. Runnable:运行状态,Java线程把操作系统中的就绪和运行两种状态统一称为“运行中”。

3. Blocked:阻塞,线程进入等待状态,线程因为某种原因,放弃了CPU的使用权。

阻塞的几种情况:

A. 等待阻塞:运行的线程执行了wait(),JVM会把当前线程放入等待队列。

B. 同步阻塞:运行的线程在获取对象的同步锁时,如果该同步锁被其他线程占用了,JVM会把当前线程放入锁池中。

C. 其他阻塞:运行的线程执行sleep(),join()或者发出IO请求时,JVM会把当前线程设置为阻塞状态,当sleep()执行完,join()线程终止,IO处理完毕线程再次恢复。

4. Waiting:等待状态。

5. timed_waiting:超时等待状态,超时以后自动返回。

6. terminated:终止状态,当前线程执行完毕。

线程的六种状态之间的转换:

当实例化一个线程之后,首先进入初始状态,即New状态,此时线程在启动的时候并不是立刻就运行,而是要等到操作系统调度之后才运行,然后调用start()进入运行状态,即runnable,其中运行状态中包括运行(running)和就绪(ready)两种状态,这两种状态在操作系统的调度下可以互相转换,如果运行中的线程时间片被CPU抢占的话就会变成就绪状态;运行中的线程通过调用synchronized方法或synchronized块进入阻塞状态,即blocked,当线程获取到锁之后进入运行状态;如果线程在执行过程中调用了sleep(),wait().join(),Locksupported.parkUtil()等方法时,会进入等待状态(waiting)或超时等待状态,即timed_waiting,再次调用notify(),notifyAll(),Locksupported.unpark()等方法时,又会重新进入运行时状态,当线程执行完成时,就进入了终止状态,即terminated状态。

注:Locksupported是JDK 1.6提供的一个工具类,在java.util.concurrent包中,它所提供的park,unpark方法比wait,notify方法的灵活性更高。

通过命令行的方式查看线程状态

先介绍两个命令:

1. Jps:JDK 1.5提供的显示当前所有Java进程pid的命令,可以获取相应的进程pid。

2. Jstack:是Java虚拟机自带的一种堆栈跟踪工具,他可以打印出给定的进程pid信息和远程调试服务的Java堆栈信息。

具体操作步骤:

打开终端或命令行工具,输入jps命令,获取pid;

输入jstack pid,查看当前进程的信息。

java线程有哪几种状态

看完上述内容,你们对java中的线程状态有进一步的了解吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读。


网站栏目:java线程有哪几种状态
本文链接:http://bjjierui.cn/article/gdcosc.html

其他资讯