广告
返回顶部
首页 > 资讯 > 后端开发 > 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://www.lsjlt.com/news/178424.html(转载时请注明来源链接)

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java线程生命周期图文详细讲解
    线程的状态 New 表示线程已创建,没启动的状态此时已经做了一些准备工作,还没有执行run方法中代码 Runnable 调用start方法之后的状态,表示可运行状态(不一定正在运行...
    99+
    2023-01-28
    Java线程生命周期 Java生命周期
  • Vue.js的生命周期详细讲解
    本篇内容主要讲解“Vue.js的生命周期详细讲解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue.js的生命周期详细讲解”吧!用Vue框架,熟悉它的生命周期...
    99+
    2022-10-19
  • Flutter生命周期超详细讲解
    目录一、组件生命周期1、StatelessWidget2、StatefulWidget2.1、初始化阶段2.2、状态变化阶段2.3、销毁阶段二、App生命周期一、组件生命周期 flu...
    99+
    2023-01-29
    Flutter生命周期研究 Flutter生命周期方法
  • Vue组件与生命周期详细讲解
    目录写在前面生命周期图解总结写在前面 Vue.js的核心就是以简洁的模板语法将数据渲染进Dom系统。vue实例在渲染成html的时候往往要经过以下的步骤: 读取数据和方法,设置数据绑...
    99+
    2022-11-13
    Vue组件 Vue生命周期
  • Java线程的生命周期的详解
    Java线程的生命周期的详解对于多线程编程而言,理解线程的生命周期非常重要,本文就针对这一点进行讲解。一、线程的状态线程的存在有几种不同的状态,如下: New状态 Ready状态 Running状态 Dead状态 Non Runn...
    99+
    2023-05-30
    java 线程 生命周期
  • 一文详解Java线程的6种状态与生命周期
    目录1.线程状态(生命周期)2.操作线程状态2.1.新创建状态(NEW)2.2.可运行状态(RUNNABLE)2.3.被阻塞状态(BLOCKED)2.4.等待唤醒状态(WAITING...
    99+
    2022-11-13
  • 如何理解Java线程生命周期
    本篇内容主要讲解“如何理解Java线程生命周期”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Java线程生命周期”吧!如果要说 Java 线程的生命周期的话,那我觉得就要先说说操作系统的...
    99+
    2023-06-16
  • 怎么理解java线程生命周期
    本篇内容主要讲解“怎么理解java线程生命周期”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解java线程生命周期”吧!线程生命周期的几种状态刚接触线程生命周期时,我总是记不住,也理解不了...
    99+
    2023-06-16
  • AndroidActivity的生命周期与加载模式超详细图文解析
    目录Activity的生命周期Activity的加载模式Activity的生命周期 Activity是安卓应用的重要组成单元之一,其对于安卓的作用类似于Servlet对于Web应用的...
    99+
    2023-02-28
    Android Activity的生命周期 Android Activity的加载模式
  • 深入讲解Java编程中类的生命周期
    引言 最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前国内java方面的教材...
    99+
    2022-06-04
    生命周期 Java
  • Java中Servlet的生命周期详解
    目录Web基础和HTTP协议什么是ServletServlet的生命周期Web基础和HTTP协议 ┌─────────┐ ┌──────...
    99+
    2022-11-13
  • java线程生命周期哪些状态
    Java线程生命周期有以下几个状态:1. 新建状态(New):线程被创建但还未开始执行。2. 就绪状态(Runnable):线程已经...
    99+
    2023-08-26
    java
  • Java线程生命周期及转换过程
    目录Java 线程生命周期生命周期转换1.从 NEW 到 RUNNABLE2.从 RUNNABLE 到 BLOCKED3.从 RUNNABLE 到 WAITTING4.从 RUNNA...
    99+
    2022-11-13
  • Java深入讲解Bean作用域与生命周期
    目录1. Bean 的作用域1.1 观看案例1.2 作用域的定义1.3 Bean 的 6 种作用域1.4 如何设置 Bean 的作用域① @Scope(ConfigurableBea...
    99+
    2022-11-13
  • Java中线程的生命周期是什么
    这篇文章主要介绍“ Java中线程的生命周期是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ Java中线程的生命周期是什么”文章能帮助大家解决问题。操作系统中线程的生命周期操作系统的线程生命周...
    99+
    2023-06-16
  • Java中的线程生命周期核心概念
    目录Java多线程Java中线程的生命周期NEWRunnableBlockedWaitingTimed WaitingTerminated结论前言: 在本文中,我们将详细讨论Java...
    99+
    2022-11-13
  • Java线程生命周期的终止与复位
    目录Thread生命周期生命周期概述线程生命周期流程图线程生命周期测试启动线程java中的启动Hotspot中的启动线程中断与复位不要使用stop方法使用interrupt方法线程的...
    99+
    2022-11-13
  • C++临时性对象的生命周期详细解析
    有关临时对象的生命周期有三种情况:1)一般情况:临时性对象的被摧毁,应该是对完整表达式(full-expression)求值过程中的最后一个步骤。该完整表达式造成临时对象的产生。实例...
    99+
    2022-11-15
    C++ 临时性对象 生命周期
  • MySql执行流程与生命周期详解
    目录一、mysql 客户端二、MySQL 服务端1. 查询缓存2. SQL 解析器3. 查询优化器4. SQL 执行器总结我们经常会在一起讨论怎样优化 SQL、怎样优化数据库,那么请问你知道执行一条 SQL 的过程中都经...
    99+
    2022-09-13
  • 超详细讲解Java线程池
    目录池化技术池化思想介绍池化技术的应用如何设计一个线程池Java线程池解析ThreadPoolExecutor使用介绍内置线程池使用ThreadPoolExecutor解析整体设计线...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作