ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

324线程状态概念和325等待唤醒案例分析

2022-07-08 12:05:39  阅读:162  来源: 互联网

标签:状态 Object long 线程 324 325 cpu wait


线程状态的概述

当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。

在线程的生命周期中,有几种状态呢?在AP中java.lang. Thread. State这个枚举中给出了六种线程状态这里先列出各个线程状态发生的条件,下面将会对每种状态进行详细解析

线程状态理解:
我们创建了多个线程(新建状态)并调用start方法启动线程,这些线程有些抢到cpu执行权有些没有抢到,抢到的进入运行状态,没抢到的进入阻塞状态,如果运行状态中的线程执行完毕(run()方法结束),或者调用stop()强制关闭线程,或者run()方法中产生异常,则会进入死亡状态.
如果线程在运行状态执行时调用sleep(long)或者wait(long)方法,则会进入休眠(睡眠)状态,进行计时等待,等设定的时间到期则从休眠状态醒来进行cpu的抢夺,如果cpu正在使用,则进入阻塞状态进行等待抢夺cpu,如果cpu未使用则进入运行状态.
如果线程在运行状态调用了Object.wait()方法(不带参数),则线程进入无限(永久)等待状态,此状态与休眠状态的不同是休眠状态可以自己醒来,而无限等待状态不能自己醒来,需要调用Object.notify()方法使其被动进入运行状态(cpu空闲)或者阻塞状态(cpu不空闲).

 

 线程的六种状态

线程一共有六种状态
1.NEW 
2.RUNNABLE 
3.BLOCKED 
4.WAITING 
5.TIMED_WAITING 
6.TERMINATED 
 
下面分别说明下各种状态情况
1.NEW  线程创建完但未调用 start方法
 
2.RUNNABLE 可细分两种情况  
    1. 线程正在Java虚拟机中执行 
    2. 等待操作系统分配资源(例如CPU时间片)
 
3.BLOCKED 可细分两种情况:
    1. 准备进入synchronized修饰的代码块或方法,等待对象监视器锁 
    2. 已进入synchronized修饰的代码块或方法中并调用了Object.wait()方法
 
4.WAITING 有由一下三种情况触发
    1. Object.wait() 没有设置timeout(区别于 Object.wait(long timeout))
    2. thread.join() 没有设置timeout (区别于 thread.join(long timeout))
    3. LockSupport.park
 
5.TIMED_WAITING 线程指定了定时等待状态。有以下五种情况:
    1. 调用Thread.sleep
    2. Object.wait(long timeout) (这里区别于Object.wait(),有超时时间)
    3. thread.join(long) (这里区别于Thread.join(),有超时时间)
    4. LockSupport.parkNanos
    5. LockSupport.parkUntil
 
6.TERMINATED 线程执行完成。

 

 等待唤醒案例分析

等待唤醒案例分析

 

 

 

重点!!!

Wating状态在AP中介绍为:一个正在无限期等待另一个线程执行一个特别的(唤醒)动作的线程处于这一状态。

那么我们之前遇到过这种状态吗?答案是并没有,但并不妨碍我们进行一个简单深λ的了解。我们通过一段代码来

 

 

 

 

 

 

标签:状态,Object,long,线程,324,325,cpu,wait
来源: https://www.cnblogs.com/agzq/p/16457721.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有