生命周期有五个阶段:创建线程(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()方法就会进入阻塞状态(阻塞就是等待时间) 阻塞完毕了之后
就会进入就绪状态
看下面的图流程:
最后做一个总结:
写写博客放放心情,并没有其他的意思 如果 有什么写的不对的欢迎评论区或者私聊我我会及时的改正 就互相帮助嘛 好吧,谢谢