博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程状态转化
阅读量:4100 次
发布时间:2019-05-25

本文共 614 字,大约阅读时间需要 2 分钟。

一直对线程的状态以及转化流程不太清楚,今天来总结一下

借用网上的一张流程图,大概的转化流程如下,接下来我们来具体说明一下

 (1)初始状态:我们创建线程的方法有继承Thread和实现Runnable,Callable接口这三种方法,当创建完成这时的状态就是初始状态

(2)可运行状态:当我们调用线程的start方法,就会从初始态转化为可运行状态(就绪状态)

(3)运行状态:可运行态的线程,得到CPU的调度时,就会转化为运行状态,当我们进入运行状态是情况就会变得有些复杂了

(4)终止状态:最好的结果就是run()执行结束

(5)阻塞状态:从运行态进入阻塞状态,当我们的线程需要等待用户输入,或者调用了sleep()和join()方法,那么就会进入阻塞状态,直至用户输入完成,或者sleep()时间到,join的另外一个线程结束,那么就会又进入可运行状态

(6)从运行态再次返回到可运行态:这种现象是当前线程的时间片用完,或者调用了yield()方法

(7)等待队列:从运行态进入等待队列,是在运行态调用了Object的wait()方法,然后进入等待队列,但是必须由Object的notify()或notifyAll()来唤醒线程进入锁池状态,拿到对象的锁标记才能够才回到可运行状态

(8)锁池状态:也可直接由synchronized进入锁池状态,等拿到对象锁后,才能到达可运行状态

说的不合理或不正确的地方,欢迎大家指正,谢谢!

你可能感兴趣的文章
C++总结8——shared_ptr和weak_ptr智能指针
查看>>
c++写时拷贝1
查看>>
C++ 写时拷贝 2
查看>>
Linux网络编程---I/O复用模型之poll
查看>>
Java NIO详解
查看>>
单列模式-编写类ConfigManager读取属性文件
查看>>
java中float和double的区别
查看>>
Statement与PreparedStatement区别
查看>>
Tomcat配置数据源步骤以及使用JNDI
查看>>
before start of result set 是什么错误
查看>>
(正则表达式)表单验证
查看>>
在JS中 onclick="save();return false;"return false是
查看>>
JSTL 常用标签总结
查看>>
内容里面带标签,在HTML显示问题,JSTL
查看>>
VS编译器运行后闪退,处理方法
查看>>
用div+css做下拉菜单,当鼠标移向2级菜单时,为什么1级菜单的a:hover背景色就不管用了?
查看>>
idea 有时提示找不到类或者符号
查看>>
JS遍历的多种方式
查看>>
ng-class的几种用法
查看>>
node入门demo-Ajax让前端angularjs/jquery与后台node.js交互,技术支持:mysql+html+angularjs/jquery
查看>>