首页 > 编程语言 >Java基础 线程的生命周期

Java基础 线程的生命周期

时间:2023-10-27 18:56:51浏览次数:32  
标签:状态 生命周期 Java 代码 执行权 线程 就绪 CPU

 

 

1. 当创建线程对象的时候,是新建状态

2. 新建完之后 调用 start()方法 就变成了就绪状态(是在调用完了 start() 方法之后才变成了就绪状态)。在就绪状态下,线程开始抢夺 CPU 的执行权。注意是正在抢,还没有抢到,没抢到就无法执行代码。所以就绪状态 有执行资格,但没有执行权(有执行资格:有资格抢CPU的执行权;没有执行权:现在还没有抢到,不能执行代码)。说白了就是,在就绪状态,线程干的事情就是不停地在抢CPU

如果抢到了CPU的执行权,线程就会变成 运行状态

3. 运行状态下,线程就会运行代码。所以在运行状态下,线程有执行资格,也有执行权。在运行状态下,CPU的执行权是有可能会被其他的线程抢走的,一旦被抢走,就又回到了就绪状态。

如果在运行状态下,遇到了 sleep() 方法,线程就会 阻塞,说白了就是等着,什么也干不了,这个线程不能抢CPU的执行权,也不能执行代码,所以是没有执行资格,也没有执行权的。当睡眠的时间到了之后,就会变成就绪状态,重新开始抢夺CPU的执行权,抢到了才会继续执行代码

4.如果说当前的线程把 run() 方法里面所有的代码都运行完了,此时线程就会死亡,变成垃圾,此时就是死亡状态

 

标签:状态,生命周期,Java,代码,执行权,线程,就绪,CPU
From: https://www.cnblogs.com/gagaya2/p/17792987.html

相关文章

  • 获取Java21所有启动参数及默认值
    各版本获取启动参数命令:java-XX:+PrintFlagsFinal-version>jvm_flags.txt所有参数:[Globalflags]intActiveProcessorCount=-1{product}{default}uintxAdaptiveSizeDecrementScaleFactor......
  • 结合大学四年经验,带你揭秘高效自学Java的方法和路线(从认识、方法、反馈3个角度出发)
    前言大家好,我是bigsai好久不见,甚是想念,本文就自学Java的n个问题和n个方法做出一些建议,并且推荐了一条自学Java的路线,比较适合一些新入门的小白。无论你是大学生还是在职人员,想学Java时,都会面临两个选择,自学或者报班。报班通常太费钱,时间又不自由;自学又不知道如何下手,担心自己坚持......
  • 【Java集合】了解集合的框架体系结构及常用实现类,从入门到精通!
    前言通过Java基础的学习,我们掌握了主要的Java语言基本的语法,同时了解学习了Java语言的核心-面向对象编程思想。从集合框架开始,也就是进入了java这些基础知识及面向对象思想进入实际应用编码的过程,通过jdk中集合这部分代码的阅读学习,就能发现这一点。本计划在这篇中把框架体系和......
  • Java拾贝第十二天——IO流之转换流
    IO流还提供了一组转换流主要包括转换输出流(OutputStreamWriter)和(转换输入流InputStreamReader)。OutputStreamWriter转换输出流是Writer的子类,作用是将字节输出流转换为字符输出流。(字节......
  • org.apache.subversion.javahl.ClientException: The working copy needs to be upgra
    eclipse不编译,每次修改代码控制台都显示错误svn:Theworkingcopyneedstobeupgradedorg.apache.subversion.javahl.ClientException:Theworkingcopyneedstobeupgradedsvn:Workingcopy‘E:\aliyun-spirit\spiritmap0916′istooold(format10,createdbySubversi......
  • Java继承 多线程的实现方式——利用 Callable 接口 和 Future 接口方式实现
    利用Callable接口和Future接口方式实现:这种实现方式可以获取到多线程运行的结果 步骤:1.创建一个类,类名比如叫MyCallable,并实现 Callable接口  注:Callable接口有一个泛型,因为这种方式可以获取到多线程运行的结果,泛型就表示结果的类型2.重写 Callable接口里面......
  • Java基础 多线程的实现方式——实现 Runnable 接口的方式进行实现
    实现Runnable接口的方式进行实现:1.定义一个类实现 Runnable接口,并实现run方法2.在run方法里面书写该线程要执行的代码3.然后创建这个实现 Runnable接口的类的实例化对象,这个对象其实就表示多线程要执行的任务4.再去创建一个Thread类的对象,然后把 实现 R......
  • javaweb--多表关系实现
    一对多在多的一方建立外键,指向一的一方的主键多对多利用第三张中间表建立连接,第三张中间表包含两个外键,分别连接两张表的主键一对一多用于表的拆分,将实体中经常使用的字段放在一张表中,不经常使用的字段放在另一张表中,提升查询效率。在任何一方设置外键,连接另一方主键,并设置......
  • linux 更换java 版本
    1查看java版本ls/usr/lib/jvm/2设置java版本(根据提示的编号)sudoupdate-alternatives--configjava3设置环境变量sudonano/etc/environment然后添加以下内容:JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"PATH=$JAVA_HOME/bin:$PATH注意,JAVA_HOME需要指向您希望使......
  • Java拾贝第十二天——System类
    System类的常量常量描述publicfinalstaticInputStreamin系统标准输入,一般是键盘publicfinalstaticPrintStreamout系统标准输出,一般是显示器publicfinalstaticPrintStreamerr错误输出可以看到out和err是PrintStream类型的,而in是InputStream类型......