首页 > 其他分享 >线程的生命周期和触发的机制

线程的生命周期和触发的机制

时间:2022-08-17 10:24:33浏览次数:46  
标签:触发 生命周期 状态 调用 线程 就绪 CPU 运行

java线程的五种基本状态
1.新建状态(new):当线程对象创建后,即进入新建状态,如Thread t=new MyThread();
2.就绪状态(Runnable):当调用线程对象的start()方法(t.start()),线程即进入就绪状态,处理就绪状态线程,只是说明当前线程做好了准备,随时准备等待CPU调度执行,并不是说执行了t.start()就会立即执行
3.运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时的线程才开始被执行,即进入到运行状态,PS:就绪状态是进入运行状态的唯一入口,也就是说,线程想进入运行状态,必须先处于就绪状态
4.阻塞状态(Blocked):处于运行状态的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入就绪状态,才有机会再次被CPU调用进入就绪状态,根据阻塞产生的原因不同,阻塞状态又可以分为三种:
等待阻塞:运行状态线程执行wait()
同步阻塞: 线程在获取synchronized同步锁失败(因为锁被其他线程所占用),它会同步进入同步锁阻塞
其他阻塞:通过调用线程的sleep()或join()或发送I/O请求时,线程会进入阻塞状态,当sleep()状态超时、join()等待超时线程终止或者超时,或者I/O处理完成完毕,线程重新转入就绪状态
5.死亡状态:线程执行完或者因异常退出了run()方法,该线程生命周期

就绪状态转为运行状态:当前线程获取处理器资源
运行状态转为就绪状态:当前线程调用了yeid()或者在运行过程中失去了处理器资源
运行状态转为死亡状态:当前线程执行完毕或出现异常

ps:当调用线程的yield()方法时,线程从运行状态转换为就绪状态,但接下来CPU调度就绪状态中的哪个线程具有一定的随机性,因此,可能会出现A线程调用了yield()方法后,接下来CPU仍然调度了A线程的情况。

 

标签:触发,生命周期,状态,调用,线程,就绪,CPU,运行
From: https://www.cnblogs.com/mike-mei/p/16594076.html

相关文章

  • 奇淫巧技,CompletableFuture 异步多线程是真的优雅
     一个示例回顾Future一些业务场景我们需要使用多线程异步执行任务,加快任务执行速度。JDK5新增了Future接口,用于描述一个异步计算的结果。虽然Future以及相关使用......
  • 多线程和异步
    多线程和异步异步方法—Async、Await 一:前言1.所有带有Async关键字的异步方法返回类型:① Task<T>:如果调用方法想通过调用异步方法获取一个T类型的返回值,......
  • 力扣|Q1834单线程CPU-SingleThreadedCPU
    Q1834SingleThreadedCPU简介给你一个二维数组tasks,用于表示n​​​​​​项从0到n-1编号的任务。其中tasks[i]=[enqueueTimei,processingTimei]意味着第i......
  • C# 线程同步方法
    1、lock锁定的是一个引用类型,值类型不能被锁定,但应该避免锁定一个string,因为string的存储方式是不样的。主要注意的就是被锁的这个对象。classProgram{p......
  • Java多线程开发系列之五:Springboot 中异步请求方法的使用
    Springboot中异步线程的使用在过往的后台开发中,我们往往使用java自带的线程或线程池,来进行异步的调用。这对于效果来说没什么,甚至可以让开发人员对底层的状况更清晰,但是对......
  • python不输出warning信息和多线程
    python 不输出warning信息 加入-Wignore参数Python -Wignore XXX.pyPython多线程1同一函数执行多线程,使用apply_async函数参考https://www.cnblogs.com/ai......
  • java线程池源码阅读
    说明简单理解和使用可以参考:https://www.cnblogs.com/LQBlog/p/8735356.html类图接口Executor接口publicinterfaceExecutor{/***代表提交了一个任......
  • 11.jmeter实现跨线程调用token值
    1.请求登录接口提取token值,确保token值提取成功,可以添加调试取样器在请求中,查看结果树是否提取成功   2.设置token为全局变量线程组-添加-BeanShell取样器,输入脚本......
  • 100行代码实现一个RISC-V架构下的多线程管理框架
    1.摘要本文将基于RISC-V架构和qemu仿真器实现一个简单的多线程调度和管理框架,旨在通过简单的代码阐明如何实现线程的上下文保存和切换,线程的调度并非本文的重点,故......
  • 8、ThreadPoolTaskExecutor线程并发
    一、线程池的优点:1、降低资源消耗。通过重复利用自己创建的线程降低线程创建和销毁造成的消耗。2、提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行......