线程的五种状态和六中状态,线程的生命周期

线程的生命周期包括创建、就绪、运行、阻塞、等待和死芒状态。没有运行状态,只有可运行状态。线程通过start()进入就绪,获取CPU执行权后变为运行,sleep()或wait()会进入阻塞或等待,执行完毕进入死芒状态,等待垃圾回收。
摘要由CSDN通过智能技术生成

 生命周期有五个阶段:创建线程(New)  就绪(Runnable) 

                 运行(Running)  阻塞(Blocked) 死芒 (Terminated)

 生命周期也也六个阶段的哦:  创建线程   、就绪状态运行状态

                 阻塞状态  、等待状态(Waiting) 最后 死芒状态

生命周期也也七个阶段的哦  创建, 就绪,运行,阻塞,等待,计算等待,死去状态

其实是没有运行状态的 

        为什么没有呢 ? 因为在抢夺CPU权的的时候  那么这时就会把当前的线程交给操作系统来完成 然后JVM 就不管了。可以看下下面的API文档 搜索Thread.State 就可以看到只有六种状态

        那是怎么运行的呢 ?Runnable

        创建线程:线程被创建 此时 并不是真正的创建了一个线程对象 而是做一个初始状态(开启状态)  此时是没有启动的   因为没有调用start方法,所以当前线程只是创建了一个对象

        比如 线程对象是这样子的它并没有调用start()方法 来启动线程对吧意思就是这样

          MyThread thread1 = new MyThread()

        就绪状态或者可运行状态: 这个时候才是真正的创建了线程 其他线程调用了该线程 start()方法 那么该线程就是就绪状态 简单的说就是 其他人调用(start()方法)了他那么他就会进入就绪状态

        运行状态:   可以有执行的资格 , 可以执行代码的权利    没有运行状态 只有可运行状态 加个运行状态好理解些

        阻塞状态:   出了点意外调用了sleep()方法 就变成了阻塞状态  阻塞状态情况下意思就是 罚站 不能动 或者说 是 睡觉 等等, , 等醒来了之后就会变回就绪状态

        等待状态:     当线程遇到某些原因(wait)时就会进行等待状态 需要其他线程来唤醒该等待的线程

        计时等待状态:(Timed Waiting)当线程因为某些原因需要等待一段时间时,处于计时等待状态。比如 调用了 sleep() 方法、带有超时参数的 wait() 方法

        死芒状态:  线程把代码全部都执行完毕了 就到了   自我终结状态了 终结了之后就没什么事情要做了 就会变成垃圾 , 等待垃圾回收器来回收垃圾

        线程的生命周期的五种状态:       

             线程的生命周期的流程:

                     首先创建一个线程1调用start()方法j就会进入就绪状态 -> 线程1进入就绪状态(这个时候是没有执行权的只有但是有执行的权利) 然后线程1绪结束之后  ->  线程1获取执行的权利 执行代码(有权利执行代码  也有执行权)  -> 执行完了代码就进入了死芒状态(自杀)变成垃圾等垃圾回收器来回收垃圾

 如果 线程遇到了sleep()方法就会进入阻塞状态(阻塞就是等待时间) 阻塞完毕了之后

就会进入就绪状态

      

            看下面的图流程:

最后做一个总结:        

                写写博客放放心情,并没有其他的意思 如果 有什么写的不对的欢迎评论区或者私聊我我会及时的改正 就互相帮助嘛 好吧,谢谢

 

                        

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值