返回顶部
首页 > 资讯 > 后端开发 > Python >Java线程生命周期图文详细讲解
  • 637
分享到

Java线程生命周期图文详细讲解

Java线程生命周期Java生命周期 2023-01-28 06:01:57 637人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

线程的状态 New 表示线程已创建,没启动的状态此时已经做了一些准备工作,还没有执行run方法中代码 Runnable 调用start方法之后的状态,表示可运行状态(不一定正在运行

线程的状态

New

  • 表示线程已创建,没启动的状态
  • 此时已经做了一些准备工作,还没有执行run方法中代码

Runnable

  • 调用start方法之后的状态,表示可运行状态(不一定正在运行,因为调用start方法之后不一定立即运行)
  • 如果线程拿到CPU资源,但是突然资源被抢走,这个线程依然处于Runnable

Blocked

  • 线程进入到被synchronized修饰的代码块时,该已经被其他线程拿走,此时该线程处于Blocked
  • Blocked只针对synchronized

Waiting

  • 没有设置时间参数的Object.wait方法可使线程状态变为waiting

Timed Waiting

  • 相对Waiting,有了时间参数

Terminated

  • 执行完毕
  • run方法正常执行完毕
  • 或者出现了一个没有被捕获的异常终止了run方法

代码演示

  • 展示线程的New、Runnable、Terminated状态
  • 线程刚被new处于NEW状态
  • 调用start方法处于RUNNABLE状态
  • 程序正在执行处于RUNNABLE状态而不是RUNNING
  • 程序结束处于TERMINATED状态
public class NewRunnableTerminated implements Runnable {
    public static void main(String[] args) {
        Thread thread = new Thread(new NewRunnableTerminated());
        // 打印线程状态
        // New
        System.out.println(thread.getState());
        thread.start();
        // Runnable
        System.out.println(thread.getState());
//        try {
//            Thread.sleep(100);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
        // Runnable
        System.out.println(thread.getState());
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // TERMINATED
        System.out.println(thread.getState());
    }
    @Override
    public void run() {
        for (int i = 0; i < 10000; i++) {
            System.out.println(i);
        }
    }
}

  • 演示waiting、Blocked、Timed Waiting
  • 中间频繁调用sleep方法是防止代码执行太快,达不到应有的效果
  • 线程被调用sleep,处于TIMED_WAITING
  • 当一个线程执行synchronized内的代码,另一个线程也要执行则该线程处于BLOCKED
  • 线程执行wait方法,处于WAITING
public class BlockWaitingTimedWaiting implements Runnable{
    public static void main(String[] args) {
        BlockWaitingTimedWaiting blockWaitingTimedWaiting = new BlockWaitingTimedWaiting();
        Thread thread1 = new Thread(blockWaitingTimedWaiting);
        thread1.start();
        Thread thread2 = new Thread(blockWaitingTimedWaiting);
        thread2.start();
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(thread1.getState());
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(thread2.getState());
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(thread1.getState());
    }
    @Override
    public void run() {
        syn();
    }
    private synchronized void syn() {
        try {
            Thread.sleep(1000);
            wait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

阻塞状态

  • 一般而言,Blocked、Waiting、Timed_waiting都被称之为阻塞状态
  • 在阻塞状态下,什么时候可以继续执行是不受控制的

到此这篇关于Java线程生命周期图文详细讲解的文章就介绍到这了,更多相关Java线程生命周期内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java线程生命周期图文详细讲解

本文链接: https://lsjlt.com/news/178424.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java线程生命周期图文详细讲解
    线程的状态 New 表示线程已创建,没启动的状态此时已经做了一些准备工作,还没有执行run方法中代码 Runnable 调用start方法之后的状态,表示可运行状态(不一定正在运行...
    99+
    2023-01-28
    Java线程生命周期 Java生命周期
  • Vue.js的生命周期详细讲解
    本篇内容主要讲解“Vue.js的生命周期详细讲解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue.js的生命周期详细讲解”吧!用Vue框架,熟悉它的生命周期...
    99+
    2024-04-02
  • Flutter生命周期超详细讲解
    目录一、组件生命周期1、StatelessWidget2、StatefulWidget2.1、初始化阶段2.2、状态变化阶段2.3、销毁阶段二、App生命周期一、组件生命周期 flu...
    99+
    2023-01-29
    Flutter生命周期研究 Flutter生命周期方法
  • Java线程的生命周期的详解
    Java线程的生命周期的详解对于多线程编程而言,理解线程的生命周期非常重要,本文就针对这一点进行讲解。一、线程的状态线程的存在有几种不同的状态,如下: New状态 Ready状态 Running状态 Dead状态 Non Runn...
    99+
    2023-05-30
    java 线程 生命周期
  • Vue组件与生命周期详细讲解
    目录写在前面生命周期图解总结写在前面 Vue.js的核心就是以简洁的模板语法将数据渲染进Dom系统。vue实例在渲染成html的时候往往要经过以下的步骤: 读取数据和方法,设置数据绑...
    99+
    2022-11-13
    Vue组件 Vue生命周期
  • 如何理解Java线程生命周期
    本篇内容主要讲解“如何理解Java线程生命周期”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Java线程生命周期”吧!如果要说 Java 线程的生命周期的话,那我觉得就要先说说操作系统的...
    99+
    2023-06-16
  • 怎么理解java线程生命周期
    本篇内容主要讲解“怎么理解java线程生命周期”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解java线程生命周期”吧!线程生命周期的几种状态刚接触线程生命周期时,我总是记不住,也理解不了...
    99+
    2023-06-16
  • 一文详解Java线程的6种状态与生命周期
    目录1.线程状态(生命周期)2.操作线程状态2.1.新创建状态(NEW)2.2.可运行状态(RUNNABLE)2.3.被阻塞状态(BLOCKED)2.4.等待唤醒状态(WAITING...
    99+
    2024-04-02
  • 深入讲解Java编程中类的生命周期
    引言 最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前国内java方面的教材...
    99+
    2022-06-04
    生命周期 Java
  • java线程生命周期哪些状态
    Java线程生命周期有以下几个状态:1. 新建状态(New):线程被创建但还未开始执行。2. 就绪状态(Runnable):线程已经...
    99+
    2023-08-26
    java
  • AndroidActivity的生命周期与加载模式超详细图文解析
    目录Activity的生命周期Activity的加载模式Activity的生命周期 Activity是安卓应用的重要组成单元之一,其对于安卓的作用类似于Servlet对于Web应用的...
    99+
    2023-02-28
    Android Activity的生命周期 Android Activity的加载模式
  • Java线程生命周期及转换过程
    目录Java 线程生命周期生命周期转换1.从 NEW 到 RUNNABLE2.从 RUNNABLE 到 BLOCKED3.从 RUNNABLE 到 WAITTING4.从 RUNNA...
    99+
    2024-04-02
  • Java中Servlet的生命周期详解
    目录Web基础和HTTP协议什么是ServletServlet的生命周期Web基础和HTTP协议 ┌─────────┐ ┌──────...
    99+
    2024-04-02
  • Vue生命周期详解
    这篇博客将会从下面四个常见的应用诠释组件的生命周期,以及各个生命周期应该干什么事 单组件的生命周期父子组件的生命周期兄弟组件的生命周期宏mixin的生命周期 生命周期:Vue 实例从...
    99+
    2024-04-02
  • rust生命周期详解
    目录rust生命周期借用检查函数中的生命周期手动声明生命周期结构体中的生命周期生命周期消除三条消除原则生命周期约束静态生命周期rust生命周期 生命周期是rust中用来规定引用的有效...
    99+
    2023-03-19
    rust生命周期
  • 详解vue生命周期
    目录为什么要理解生命周期什么是生命周期生命周期钩子函数created和mounted钩子的一些实战用法1.异步函数 2.Vue.nextTick对异步函数的结果进行操作 总结为什么要...
    99+
    2024-04-02
  • Java中线程的生命周期是什么
    这篇文章主要介绍“ Java中线程的生命周期是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ Java中线程的生命周期是什么”文章能帮助大家解决问题。操作系统中线程的生命周期操作系统的线程生命周...
    99+
    2023-06-16
  • ReactState与生命周期详细介绍
    目录一、State1.1 类组件中的State1.2 函数组件中的State二、React生命周期2.1 挂载2.2 更新2.3 卸载2.4 函数式组件useEffect三、总结一、...
    99+
    2024-04-02
  • Android Activity生命周期详解
    Activity 的生命周期。 一、理解Activity Activity是Android程序的4大组件之一。 Activity是Android程序的表示层。程序的每一个显...
    99+
    2022-06-06
    activity生命周期 activity Android
  • Android Service生命周期详解
    引言 应用程序组件有一个生命周期——一开始Android实例化他们响应意图,直到结束实例被销毁。在这期间,他们有时候处于激活状态,有时候处于非激活状 态;对于活动,对用户有时...
    99+
    2022-06-06
    android service service service生命周期 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作