专栏首页Java患者线程的生命周期

线程的生命周期

线程的生命周期

线程的六种状态: NEW、RUNNABLE、BIOCKED、WAITING、TIME_WAITING、TERMINATED。

  • NEW:初始状态,线程被构建,但是还没调用start方法;
  • RUNNABLE: 运行中状态,包括了就绪状态跟运行两种状态;
  • BLOCKED: 阻塞状态,线程进入等待状态,也就是线程因为某种原因放弃了CPU的执行权,分为多种情况

等待阻塞: 运行的线程执了wait方法,jvm把当前线程放入到等待队列中

同步阻塞:运行的线程获取到对象的同步锁时,若该同步锁被其他线程占用了,jvm会把当前线程放入锁池中

其他阻塞: 运行的线程执行了Thread.sleep()或者join方法,JVM会把当前线程设置为阻塞状态,当sleep结束或者 join线程终止则线程回复

  • WAITING: 一个正在无限期等待另一个线程执行一个特别的动作的线程
  • TIME_WAITING: 超时等待状态,超时以后自动返回
  • TERMINATED:终止状态, 表示当前线程执行完毕。

图解

首先线程的出生到销毁是上面的3个状态;

接着线程可以调用wait()方法变成WAITING状态

当有两个线程的时候,我们加锁可以转变线程的状态为BLOCKED

最后当我们执行wait(),join(),sleep() 会进入TIME_WAITING状态

本文分享自微信公众号 - Java患者(gh_3a16ffdedb6a),作者:Zero

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 线程的生命周期

    用户2965768
  • 线程的生命周期

    进程:程序或者任务的执行过程,拥有资源和线程。 一个进程包括由操作系统分配的内存空间,包含一个或多个线程。 线程:系统中的最小执行单位,一个进程可以有多个线程,...

    硕人其颀
  • 005.多线程-线程的生命周期

    新建状态: 当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。 如:ThreadTest thread2 = new ThreadT...

    qubianzhong
  • Java 线程的生命周期

    在操作系统层面,线程也有 【生命周期】,这是并发编程的基础我们需要掌握其中生命周期中各个节点的状态转换机制以及持有锁状态。文本将会介绍系统的周期以及在 Java...

    码哥字节
  • java中线程的生命周期

    线程是java中绕不过去的一个话题, 今天本文将会详细讲解java中线程的生命周期,希望可以给大家一些启发。

    FunTester
  • Java 多线程之线程的生命周期 | 图解

    在 Java 初中级面试中,关于线程的生命周期可以说是常客了。本文就针对这个问题,通过图文并茂的方式详细说说。

    本人秃顶程序员
  • java多线程系列_线程的生命周期(4)

    与人有生老病死一样,线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。下面给出了Thread类中...

    Hongten
  • zephyr笔记 2.1.1 线程的生命周期

    http://docs.zephyrproject.org/kernel/threads/lifecycle.html

    twowinter
  • 新手学JAVA(十一)-多线程----线程的生命周期

    当一个线程被创建并启动之后,并不是一开始就处于执行状态,已不是一直处于运行状态。线程也是有生命周期的,包括:创建(New)、就绪(Runnable)、阻塞(B...

    令仔很忙
  • 说说线程的生命周期和状态

    Java 线程在运行的生命周期中的指定时刻,只可能处于下面 6 种不同状态的其中一个(图源《Java 并发编程艺术》4.1.4 节)。

    happyJared
  • 线程的生命周期和状态 - 崔笑颜的博客

    Java 线程在运行的生命周期中的指定时刻只可能处于下面 6 种不同状态的其中一个状态(图源《Java 并发编程艺术》4.1.4 节)。

    崔笑颜
  • 很遗憾,没有一篇文章能讲清楚线程的生命周期!

    大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。

    彤哥
  • 很遗憾,没有一篇文章能讲清楚线程的生命周期!

    大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。

    Bug开发工程师
  • 一文看懂线程的生命周期,利用线程池模拟群发短信

    Java给多线程编程提供了内置的支持。,一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务,能满足程序员编写高效率...

    一个程序员的成长
  • Run和Start的区别,线程的生命周期,优先级,礼让和守护线程

    取值为1~10,缺省为5,但是线程的优先级并不可靠,不建议作为线程开发时候的手段,因为有的操作系统可能会忽略线程的执行优先级,所以开发中需要将这个不确定因素列如...

    彼岸舞
  • 【高并发】线程的生命周期其实没有我们想象的那么简单!!

    作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了...

    冰河
  • java中线程池的生命周期与线程中断

    如果代码能够在某个操作正常完全之前置入“完成”状态,那么这个操作就称为可取消的。java中提供了协作式机制,使请求取消的任务和代码遵循一种协商好的协议。

    爬蜥
  • 深入理解Java多线程(multiThread)多线程的基本概念线程同步wait,notify,notifyAll线程的生命周期

    一个java程序启动后,默认只有一个主线程(Main Thread)。如果我们要使用主线程同时执行某一件事,那么该怎么操作呢? 例如,在一个窗口中,同时画两排...

    desperate633
  • 话说 线程的概念&生命周期

    进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中...

    木子的昼夜

扫码关注云+社区

领取腾讯云代金券