java线程生命周期
![](/upload/ad_content/xuanchuantu-19.jpg)
成都创新互联电话联系:18982081108,为您提供成都网站建设网页设计及定制高端网站建设服务,
成都创新互联网页制作领域10多年,包括
成都PE包装袋等多个方面拥有多年的网站营销经验,选择
成都创新互联,为网站锦上添花。java线程生命周期
1、线程的生命周期介绍
- New状态:java程序通过New创建了Thread对象,跟普通的对象没有什么区别,想要进一步变为可运行状态时必须使用Thread的start方法
- Runnable状态:可运行状态,只有在该状态下的线程才算是真正在jvm中创建了进程,但仅仅也只是这样,在此状态下的线程并没有实际上的运行,只有在获取到cpu的调度执行时候才可实际运行
- Running状态:运行状态,只有CPU当前通过轮询或者一些方式在线程Runnable队列中选择了进程才可进入该状态,在此状态下才可真正的执行具体的逻辑代码
- Blocked状态:阻塞状态,线程由于某种原因放弃cpu的使用使用权,暂停运行
- Terminated状态:终止状态
2、线程状态切换详解
![在这里插入图片描述](/upload/otherpic5/b25696f0a2a74c34843850a5ea78c9fa.jpg)
- NEW->RUNNABLE:通过NEW新建的Thread对象只有通过调用start()方法才算是真正在jvm中创建了线程,也就变为了RUNNABLE状态
- RUNNABLE->RUNNING:在RUNNABLE状态的进程只有得到CPU的调度使用权的时候才会转变为RUNNING状态
- RUNNING->RUNNABLE:在RUNNING状态的线程有两种情况会重新回到RUNNABLE状态,一种为线程调用yield方法主动为相同优先级或者更高优先级的线程放弃自己运行的机会,还有一种为被动放弃,由于CPU的轮询使得该线程被动放弃执行权
- RUNNABLE->BLOCKED:RUNNING状态实际上也算是RUNNABLE的线程,RUNNABLE状态还有可能会进入BLOCKED阻塞状态,主要有以下几种情况
- 线程调用了suspend(已过期)、sleep或者wait方法
- 线程需要进行某个阻塞的IO操作
- 获取某个锁资源,加入到了某个锁资源的阻塞队列中而进入BLOCKED状态
- BLOACKED->RUNNABLE:处于BLOCKED状态的线程会因为某些操作重新进入RUNNABLE状态
- 调用resume(已过期)方法
- 线程阻塞的操作结束,比如IO操作已经结束,拿到了想要的东西进入到RUNNABLE状态
- 线程完成了指定的休眠时间
- wait的线程被其他的线程使用notify/notifyAll唤醒
- 线程获取到了需要的锁资源
- 其他线程调用了interrupt方法,表明他有可能会中断
- RUNNABLE->TERMINATED:正在运行中的(RUNNABLE)状态下的线程有三种方式会进入到TERMINATED状态,一种为程序正常运行结束则会进入TERMINATED状态,该状态为线程的最终状态;还有一种方式为线程调用了stop方法(已过期) ;最后一种为JVM崩溃,所有线程都结束掉了
- BLOCKED->TERMINATED:阻塞的进程使用stop方法也会进入TERMINATED状态
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
名称栏目:java线程生命周期-创新互联
文章起源:
http://cdkjz.cn/article/dggdod.html