【八股】Java 线程状态转化

news2024/9/22 17:20:45

线程一共有六种状态

1. NEW - 新建

public static void main(String[] args) throws ExecutionException, InterruptedException {
    Thread t = new Thread(() -> {
        System.out.println("running");
    }, "t1");
    System.out.println(t.getState()); // 线程创建
}

在这里插入图片描述

2. RUNNABLE - 可执行

public static void main(String[] args) throws ExecutionException, InterruptedException {
    Thread t = new Thread(() -> {
        System.out.println("running");
    }, "t1");
    System.out.println(t.getState()); // 线程创建
    
    t.start();
    System.out.println(t.getState()); // 执行start()
}

在这里插入图片描述

3. BLOCKED- 阻塞

public static void main(String[] args) throws ExecutionException, InterruptedException {
    Object LOCK = new Object();
    Thread t = new Thread(() -> {
        System.out.println("before sync");
        synchronized (LOCK) {
            System.out.println("in sync");
        }
    }, "t1");
    System.out.println(t.getState()); // 线程创建

    t.start();
    synchronized (LOCK) {
        System.out.println("running");
        Thread.sleep(3000);
    }
    System.out.println(t.getState()); // 执行start()
}

在这里插入图片描述

4. WAITING - 等待

public static void main(String[] args) throws ExecutionException, InterruptedException {
    ObjectLOCK = new Object();
    Thread t = new Thread(() -> {
        synchronized (LOCK) {
            try {
                LOCK.wait();
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }

        }
    }, "t1");
    System.out.println(t.getState()); // 输出:NEW 线程创建

    t.start();
    Thread.sleep(1000);
    System.out.println(t.getState());

}

在这里插入图片描述

5. TIMED_WAITING - 计时等待

public static void main(String[] args) throws ExecutionException, InterruptedException {
    Object LOCK = new Object();
    Thread t = new Thread(() -> {
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }, "t1");
    System.out.println(t.getState()); // 输出:NEW 线程创建

    t.start();
    Thread.sleep(1000);
    System.out.println(t.getState());

}

在这里插入图片描述

6. TERMINATED - 死亡

public static void main(String[] args) throws ExecutionException, InterruptedException {
    Object LOCK = new Object();
    Thread t = new Thread(() -> {}, "t");
    System.out.println(t.getState()); // 输出:NEW 线程创建

    t.start();
    Thread.sleep(1000); // 让线程t执行完
    System.out.println(t.getState());
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1543327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL系列】Public Key Retrieval is not allowed

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

简单学习下MQTT(2)

MQTT 简介 MQTT 是非常简单的协议,最初由 IBM 的两位工程师 Andy Stanford-Clark 以及 Arlen Nipper 在 1999 年为监控输油管道设计的。它被设计的场景就是有限的带宽、轻量级以及很小的耗电量,在那个时候,卫星宽带就是那么小,且…

RPA使用Native Messaging 协议实现浏览器自动化

RPA 即机器人流程自动化,是一种利用软件机器人或人工智能来自动化业务流程中规则性、重复性任务的技术。RPA 技术可以模拟和执行人类在计算机上的交互操作,从而实现自动化处理数据、处理交易、触发通知等任务。帮助企业或个人实现业务流程的自动化和优化…

基于ssm的医院住院管理系统论文

摘 要 随着时代的发展,医疗设备愈来愈完善,医院也变成人们生活中必不可少的场所。如今,已经2021年了,虽然医院的数量和设备愈加完善,但是老龄人口也越来越多。在如此大的人口压力下,医院住院就变成了一个问…

计算机软考初级含金量高吗?

并不是说软考初级就没有含金量,对于想评初级职称的考生来说还是很有用处的。根据 国人部 发[2003]39号:通过考试获得证书的人员,表明其已具备从事相应专业岗位工作的水平和能力,用人单位可根据工作需要从获得证书的人员中择优聘任…

技术复盘:Flash Memory揭秘(1)

目录 1.Flash基本原理概述 1.1 Non-volatile Memory的分类 1.2 Flash编程\擦除原理 2.小结 1.Flash基本原理概述 1.1 Non-volatile Memory的分类 Flash在嵌入式领域是非常重要的角色,主要用于存储数据代码,为代码的执行提供基础保证等。 实际上&a…

marvelous designer打开发现gizmo(变换控制器)只有一个方向上有面控制器,缺另外两个面控制器

出现这种问题,其实是因为选中了屏幕坐标系 在3D界面下空白处点右键,选择gizmo,然后选择屏幕坐标系之外别的选项就能恢复到常规有多个面的控制器。

不能从所选图层建立3d模型--模大狮模型网

在Revit中,从所选图层直接创建3D模型并不是一个常规的操作方式。通常情况下,你需要手动创建文字或者图形,然后将其转换为3D模型。 如果你有一个平面上的文字或图形,想要将其转换为3D模型,你可以使用以下步骤&#xff1…

【包远程安装运行】SpringBoot+Mysql实现的美食分享菜谱制作平台+演示视频+开发文档(论文模板)

今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的美食分享菜谱制作平台系统,该系统分为前台和后台,多用户分享平台。主要实现了 除脚手架功能以外下面是系统的功能: 前台普通用户:注册、登录、首页、美食…

波奇学Linux:网络接口

127.0.0.1本地回环ip&#xff0c;用于本地测试&#xff0c;不会进行网络通信 TCP是面向连接的&#xff0c;服务器比较被动 需要服套接字监听 listen状态 正常通信默认会进行主机序列和网络序列的转换 TcpServer.cc #pragma once#include<iostream> #include<string…

6、运行时数据区

Java虚拟机在运行Java程序过程中管理的内存区域&#xff0c;称之为运行时数据区。《Java虚拟机规范》中规定了每一部分的作用。 3.1 程序计数器 程序计数器&#xff08;Program Counter Register&#xff09;也叫PC寄存器&#xff0c;每个线程会通过程序计数器记录当前要执行的…

海外舆情监控的重要性以及云手机的推荐

海外市场不仅有着无尽的商机&#xff0c;同时也存在着各种各样的挑战。例如&#xff0c;海外市场舆情的复杂变化给企业带来了潜在风险&#xff0c;尤其在新媒体技术快速发展的时代&#xff0c;舆论对企业品牌形象的影响日益巨大。本文将详细探讨海外舆情监控的重要性以及为大家…

西圣、漫步者、万魔开放式耳机如何?甄选机型实测对比测评

无论是通勤、工作还是休闲时光&#xff0c;耳机总能为我们带来沉浸式的音乐体验。近年来&#xff0c;开放式耳机以其独特的优势逐渐受到市场的青睐&#xff0c;其中西圣、漫步者、万魔等品牌在市场上相当火热&#xff0c;那这三款开放式耳机的实际到底如何&#xff0c;还是有许…

第一周周考技能

文章目录 1月1. 任意输入一个3位整数&#xff08;100~999&#xff0c;包含100与999&#xff09;&#xff0c;判断输入的整数是否是质数&#xff0c;如果是质数则输出是质数&#xff0c;否则输出不是质数2.“降序数”是指一个自然数的低位数字不大于高位数字的数。例如&#xff…

Python 使用 PyQt5 设计一个查询IP对话框程序

当前环境&#xff1a;Win10 x64 Python 3.8.10 PyQt5.15.2 PyQt-tools5.15.9.33 1 打开 designer.exe ,新建一个 Dialog without Buttons , 设计窗体。 C:\Python\Python38-32\Lib\site-packages\qt5_applications\Qt\bin\designer.exe 2 使用命令转换为 py C:\Python\Pyth…

【C++从练气到飞升】06---重识类和对象

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书。 目录 ⛳️推荐 一、再谈构造函数 1. 构造函数体赋值 2. 初始化列表 每个成员变量在初始化列表中只能出现一次--初始化只能初始…

电饭煲/电磁炉/空调/机顶盒显示驱动芯片特点与相关型号推荐

电饭煲、电磁炉、空调和机顶盒等家用电器通常都包括数码管或LED显示&#xff0c;用于显示时间、温度、设置等信息。这些芯片通常具有多位数码管或LED的支持、亮度控制、多种字符和符号的显示、低功耗设计等功能。 电饭煲、电磁炉、空调和机顶盒等家用电器的显示驱动芯片通常是…

Docker安装配置

1. 安装docker-ce sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum -y install docker-ce sudo systemctl enable docker 2. 设置代理 参照&#xff1a;https://docs.docker.com/config/daemon/systemd/#httpht…

基础篇Redis

基础篇Redis 1.Redis简单介绍 Redis是一种键值型的NoSql数据库&#xff0c;这里有两个关键字&#xff1a; 键值型NoSql 其中键值型&#xff0c;是指Redis中存储的数据都是以key.value对的形式存储&#xff0c;而value的形式多种多样&#xff0c;可以是字符串.数值.甚至json…

C语言入门——使用Visual C++

C语言简介 使用Visual C 语法解释 # include <stdio.h>int main(void){printf("hello,word !");return 0; } 在C语言中&#xff0c;main()函数的返回值通常被用来表示程序执行的状态。return 0;语句是结束main()函数的一种方式&#xff0c;并且它代表了程序正…