




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java 线程的状态分析Java 线程的状态分析 在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,更多 Java 学习,请登陆疯狂 java 培训官网。 看别人写的博客,看 jdk 自己重复写了一次分析,显浅易懂的,至少比 jdk 的解析易懂得多。至于线程运行的状态图,网上大把大把的,自行 google 之。 具体的分析直接看代码的注释即可。 同时显浅地说明了 yeild 和 join 的理解 感觉那个中文 jdk api 参考手册就是机器翻译的 /* * 线程的状态分析 * author aa * */ public class ThreadState public static void main(String args) throws Exception /* * 新建线程,线程为新建状态 * jdk:至今尚未启动的线程的状态。 * 如果不给线程设置名称,线程的名称将会是:Thread-0,Thread-1。 */ ThreadDemo td = new ThreadDemo() ; System.out.println(“新建状态:“ + td.getState() ; / 新建状态:NEW /* * 可运行状态:当线程有资格运行,调用 start 方法,线程首先进入可运行状态, * 可运行状态,不一定被线程调度程序运行, * 简单来说,调用 start 方法后,该线程依然是可运行状态,但未运行, * 存放在可运行池中, * 线程在运行的过程中,该线程的状态也是可运行状态 * * djk:可运行线程的线程状态。处于可运行状态的某一线程正在 Java 虚拟机中运行, * 但它可能正在等待操作系统中的其他资源,比如处理器。 */ td.start() ; System.out.println(“可运行状态:“ + td.getState() ; / 可运行状态:RUNNABLE /* * Main 线程休眠 100 毫秒时,td 线程也就调用了 waitForTwoSecond()方法, * 指定休眠 2 秒后,再回到可运行状态 * 指定等待一定时长时,休眠状态:TIMED_WAITING * jdk:具有指定等待时间的某一等待线程的线程状态。某一线程因为调用以下带有指定正等待时间的方法之一而处于定时等待状态: * 带有超时值的 Thread.sleep (sleep 必须带值) * 带有超时值的 Object.wait * 带有超时值的 Thread.join */ Thread.sleep(100); System.out.println(“休眠状态:“ + td.getState() ; / 具有指定等待时间的某一等待线程的线程状态。 /* * 这里 Main 线程一共休眠 2100 毫秒时,td 线程调用了 waitLong()方法, * 该方法调用了 wait(),使线程处于一直等待的状态 * jdk:某一等待线程的线程状态。某一线程因为调用下列方法之一而处于等待状态: * 不带超时值的 Object.wait * 不带超时值的 Thread.join */ Thread.sleep(2000); System.out.println(“等待状态:“ + td.getState() ; / 等待状态:WAITING errupt() ; /* * 这里输出的也可能是终止状态 * jdk:受阻塞并且正在等待监视器锁的某一线程的线程状态。处于受阻塞状态的某一线程正在等待监视器锁, * 以便进入一个同步的块/方法,或者在调用 Object.wait 之后再次进入同步的块/方法。 */ td.notifyWait() ; System.out.println(“阻塞状态:“ + td.getState() ; /* * jdk:已终止线程的线程状态。线程已经结束执行。 */ Thread.sleep(1000); System.out.println(“终止状态:“ + td.getState() ; /* * 可以简单归纳为:新建 , 可运行 , 运行 , 阻塞 , 死亡 * * Thread.yeild() 让当前运行的线程回到可运行状态,让出时间给其他线程运行,但可能没用 * jdk:暂停当前正在执行的线程对象,并执行其他线程。 */ /* * join()的用法 * jdk:等待该线程终止的时间最长为 millis 毫秒。超时为 0 意味着要一直等下去。 * 简单来说,如下,由于 td 线程被 Main 线程所启动,td 线程调用 join 方法后, * 也就是 Mian 线程要等到 td 线程运行完毕才会执行 join 方法后面的代码, * jdk 的解析在这里就是将 Main 线程加入到了 td 线程的后面 * join 加参数,在这里意思就是 Main 线程需要等待 2 秒时间再继续执行 join方法后面的代码, */ / td.join() ; / td.join(2000) ; System.out.println(“线程加入 join 之后“) ; private static class ThreadDemo extends Thread Override public void run() try / 测试 join 方法 / for (int i = 0; i 5; i+) / System.out.println(i); / sleep(1000) ; / waitForTwoSecond() ; waitLong() ; catch (Exception e) / TODO Auto-generated catch block e.printStackTrace(); public synchronized void waitForTwoSecond() throws Exception wait(2000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年按钮行业当前市场规模及未来五到十年发展趋势报告
- 2025新版《数学课程标准》测试题及答案
- 2025年全国“安全生产月”《安全知识》培训预测题及答案
- 播音专业业务知识培训课件
- 房建预算合同知识练习测试题(含答案)
- 2024年爱眼护眼、眼病治疗及预防知识试题库(附含答案)
- 2025年医院感染防控相关知识培训考试试题(含答案)
- 2025学法用法考试题库及参考答案
- 2025海南国考时政试题及答案
- 2025年劳动关系协调员考试与答案解析三级试题含答案解析
- 《合理利用网络作业设计方案-2023-2024学年初中道德与法治统编版》
- 政务公开工作培训
- JJF1059.1测量不确定度评定培训讲演稿
- 人教版新目标初中英语Go-for-it!单词大全(音标齐全-已反复校对-单词分类-便于识记)
- 医院感染管理培训课件:妇产科感染的防治措施
- 农村伪劣食品总结汇报
- 人体解剖学与组织胚胎学(高职)全套教学课件
- 展会现场管理方案
- 二年级上册语文教材解读-
- 舟山沈家门渔港案例详解
- 宫颈癌护理教学查房
评论
0/150
提交评论