




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/TS 24315-3:2025 EN Intelligent transport systems - Management of electronic traffic regulations (METR) - Part 3: System of systems requirements and architecture (SoSR)
- 2025福建厦门夏商集团有限公司招聘2人考前自测高频考点模拟试题(含答案详解)
- 2025福建福州市仓山区卫健系统招聘编内31人模拟试卷及答案详解(名校卷)
- 2025贵州传媒职业学院第十三届贵州人才博览会引才1人模拟试卷及答案详解(新)
- 2025海南陵水黎族自治县中医院(陵水黎族自治县中医院医共体总院)考核招聘(第二批)员额人员模拟试卷及参考答案详解一套
- “百万英才汇南粤”2025年佛山市高明区公开招聘中小学教师(第四场)考前自测高频考点模拟试题及答案详解(网校专用)
- 2025江苏苏州高新区通安镇退管协管员招聘2人模拟试卷及答案详解(考点梳理)
- 2025呼伦贝尔五九煤炭集团招聘26人模拟试卷附答案详解(黄金题型)
- 第四单元第二课《活灵活现》 教学设计- 人教版(2024)初中美术七年级上册
- 2025年河北雄安新区新建片区学校公开选聘校长及骨干教师13人考前自测高频考点模拟试题及答案详解(易错题)
- 跨境交易信用风险传导路径-洞察阐释
- 公司管理层奖惩管理制度
- 2025年核电池项目分析及研究报告
- 兰新线N857次旅客列车神突重大事故30课件
- 拼箱货海运出口流程操作指南
- 《光学性质中的手性光学异构》课件
- 儿童青少年肥胖食养指南(2024年)解读
- 2025年辅警招聘考试试题库及答案(全优)
- GB/T 14478-2025大中型水轮机进水阀门基本技术规范
- 《神经科学感觉系统》课件
- 零星维修服务合同
评论
0/150
提交评论