首页 > 编程语言 >JAVA----线程生命周期和状态

JAVA----线程生命周期和状态

时间:2022-11-05 20:12:34浏览次数:38  
标签:状态 JAVA ---- 线程 等待 CPU 运行 wait

1.新建状态(New)

新创建了一个线程对象,但还没有调用start()方法。

实现Runnable接口和继承Thread可以得到一个线程类,new一个实例出来,线程就进入了新建状态。

2.Runnable状态:可运行状态(内含ready状态和running状态,运不运行要取决于有内核的调度器)

就绪状态(ready):新建状态的线程,调用线程的start()方法,此线程进入就绪状态。

运行状态:真正占有或持有cpu(Running)当线程获得CPU后,它才进入运行状态,真正开始执行run()方法。

Running状态可以挂起从而到就绪状态,也可以Thread.yeild礼让,但可能不会礼让成功

3.阻塞状态(Blocked)

线程调用一个在I/O上被阻塞的操作,即该操作在输入输出操作完成之前不会返回到它的调用者;

阻塞状态是正在运行的线程没有运行结束,暂时让出CPU,这时其他处于就绪状态的线程就可以获得CPU时间,进入运行状态。

5.等待状态(Waiting)

Thread.sleep(time)   o.wait(time)

t.join(time)    LockSupport.parkNanos()    LockSupport.parkUtil()

6.超时等待(Timed_Waiting)

o.wait()  t.join()   LockSupport.park()

线程进入等待状态有三种方式:

   1. cpu调度给优先级更高的线程
  2. 线程要等待获得资源或者信号
  3. 时间片的轮转,时间片到了,进入等待状态
  在可执行状态下,如果调用 sleep()、 wait()等方法,线程都将进入等待状态。

sleep() 和 wait() 的区别: sleep方法是Thread类里面的,主要的意义就是让当前线程停止执行,

让出CPU给其他的线程,但是不会释放对象锁资源以及监控的状态,当指定的时间到了之后又会自动恢复运行状态。

wait方法是Object类里面的,主要的意义就是让线程放弃当前的对象的锁,进入等待此对象的等待锁定池,

只有针对此对象调动notify方法后本线程才能够进入对象锁定池准备获取对象锁进入运行状态。

6.终止状态(Terminated)

表示该线程已经执行完毕。当线程的run()方法完成时,或者主线程的main()方法完成时,我们就认为它终止了。

这个线程对象也许是活的,但是,它已经不是一个单独执行的线程。线程一旦终止了,就不能复生。

总结 线程的特点:

一个线程是一个任务(一个程序段)的一次执行过程。

线程不占有内存空间,它包括在进程的内存空间中。

线程比进程开销小,更加轻量。 在同一进程内,多个线程可以并发执行。

在同一进程内,多个线程共享进程的资源。

 

 

 

 

 

标签:状态,JAVA,----,线程,等待,CPU,运行,wait
From: https://www.cnblogs.com/wang1999an/p/16860962.html

相关文章

  • tekton Tiggers使用案例
    安装Tiggerskubectlapply--filename\https://storage.googleapis.com/tekton-releases/triggers/latest/release.yamlkubectlapply--filename\https://storage.g......
  • Openwrt+树莓派
    试了几天,终于将在树莓派3上部署了Openwrt路由,然后作为一个子路由部署在主路由下面(和旁路由不一样),简单记录一下。1.现在sd卡(用了一个4G的卡)上刷入系统,这里用到的工具是Bale......
  • Qtui界面2k显示器显示不全的问题
    做项目时,运行qt生成界面控件字体显示不全,参考下面的博客解决。参考:Qt5.9界面设计中控件的文字显示不完全解决方案_冰蓝樱草的博客-CSDN博还找到一个博客,里面设置字体增大......
  • 实验二:逻辑回归算法实验
    |20大数据三班|实验二:逻辑回归算法实验-作业-20级大数据3班机器学习-班级博客-博客园(cnblogs.com)||学号|201613328|实验二:逻辑回归算法实验-胡辛原-博客......
  • 数据结构 图的遍历(广度优先遍历、深度优先遍历)
    8.6、图的广度优先遍历找到与顶点相邻的所有顶点,标记哪些顶点被访问过需要一个辅助队列#include<stdio.h>#include<stdlib.h>#include<math.h>#defineMaxSiz......
  • pgpool ii在lightdb下的性能测试
    1、从https://www.pgpool.net/下载最新版pgpoolii,如4.3.2。2、假设安装了postgresql或lightdb,百度一搜即可3、解压包,执行./configure &&make&&makeinstall4、修......
  • SpringBoot实战笔记:01_Spring中的Java配置
    转载:https://blog.csdn.net/android_zyf/article/details/79579862Spring4.x与SpringBoot都推荐使用Java配置xml配置:将bean的信息配置在xml配置文件中注解配置:在对应的bea......
  • 谣言检测()《Rumor Detection with Self-supervised Learning on Texts and Social Grap
     论文信息论文标题:RumorDetectionwithSelf-supervisedLearningon TextsandSocialGraph论文作者:YuanGao,XiangWang,XiangnanHe,HuaminFeng,YongdongZh......
  • 激光雷达
    激光雷达分类三角法:近距离测距精度较高(原理相似三角形)抗干扰能力较差适用室内TOF法:脉冲型TOF(DTOF+ITOF)连续型FMCW(通过发射波的相干性计算距离,测量速度......
  • 圆的面积并(模板)
    BZOJ题意:给出\(n(n<=1000)\)个圆,每个圆给出圆心坐标\((x,y)\)和半径\(r\),求它们的面积并。方法一:辛普森积分本题用辛普森积分,精度eps开小会T一个点,开大会WA一个点;如果用......