美文网首页
java多线程,java线程的生命周期有多长?

java多线程,java线程的生命周期有多长?

作者: alcohol和cat | 来源:发表于2019-08-20 23:20 被阅读0次

任何时间点的Java中的线程都存在于以下任何一种状态中。线程在任何时刻仅处于所示状态之一:

New

Runnable

Blocked

Waiting

Timed Waiting

Terminated

下图显示了任何时刻线程的各种状态。

线程的生命周期

新线程:创建新线程时,它处于新状态。当线程处于此状态时,线程尚未开始运行。当一个线程处于新状态时,它的代码尚未运行且尚未开始执行。

可运行状态准备运行的线程被移动到可运行状态。在这种状态下,线程可能实际上正在运行,或者它可能在任何时刻都准备好运行。线程调度程序负责为线程提供运行时间。

多线程程序为每个单独的线程分配固定的时间量。每个线程都会运行一段时间,然后暂停并放弃CPU到另一个线程,这样其他线程就有机会运行。发生这种情况时,所有准备运行的等待CPU和当前运行的线程的线程都处于runnable状态。

阻止/等待状态:当线程暂时处于非活动状态时,它处于以下状态之一:

阻止

等候

例如,当线程正在等待I / O完成时,它处于阻塞状态。线程调度程序负责重新激活和计划阻塞/等待线程。处于此状态的线程无法继续执行,直到它被移动到可运行状态。这些状态中的任何线程都不消耗任何CPU周期。

当一个线程试图访问当前被某个其他线程锁定的受保护代码段时,它处于阻塞状态。当受保护的部分被解锁时,该计划选择被阻止该部分的一个线程并将其移动到可运行状态。然而,当线程在某个条件上等待另一个线程时,它处于等待状态。满足此条件时,将通知调度程序并将等待线程移至可运行状态。

如果当前正在运行的线程被移动到阻塞/等待状态,则线程调度程序将调度处于可运行状态的另一个线程以运行。线程调度程序负责确定要运行的线程。

定时等待:线程在调用具有超时参数的方法时处于定时等待状态。线程处于此状态,直到超时完成或收到通知为止。例如,当线程调用sleep或条件等待时,它将被移动到定时等待状态。

终止状态:由于以下原因之一,线程终止:

因为它存在正常。当线程代码完全由程序执行时会发生这种情况。

因为发生了一些不寻常的错误事件,如分段错误或未处理的异常。

处于已终止状态的线程不再消耗任何CPU周期。

相关文章

  • Java多线程模型

    Java多线程模型 生命周期 Java 线程的生命周期包括创建,就绪,运行,阻塞,死亡 5 个状态。一个 Java...

  • Java知识梳理六

    一、Java多线程一 1.谈谈线程的生命周期和状态转移 关于线程生命周期的不同状态,在Java 5以后,线程...

  • java多线程,java线程的生命周期有多长?

    任何时间点的Java中的线程都存在于以下任何一种状态中。线程在任何时刻仅处于所示状态之一: New Runnabl...

  • 带你搞懂Java多线程(五)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四) ...

  • Java线程的生命周期

    概览 Java语言中,多线程是由线程的核心概念驱动的,而线程的生命周期会经历以下的不同状态。 Java java....

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • 带你搞懂Java多线程(六)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四)带...

  • 3个月面试20多次Java后端,总结的面试必会知识点

    Java多线程并发 先来看看并发知识库体系图: Java线程实现/创建方式? 4种线程池 ? 线程生命周期(状态)...

  • 线程池任务执行过程

    前言 JAVA通过多线程的方式实现并发,为了方便线程池的管理,JAVA采用线程池的方式对线线程的整个生命周期进行管...

  • 线程池底层原理

    概述 JAVA通过多线程的方式实现并发,为了方便线程池的管理,JAVA采用线程池的方式对线线程的整个生命周期进行管...

网友评论

      本文标题:java多线程,java线程的生命周期有多长?

      本文链接:https://www.haomeiwen.com/subject/xhjbjctx.html