VisualVM里面的Threads线程界面各种状态对应的Java代码

写一个示例代码,把几种常见的情况都开一个线程运行

package cn.oopeak.juc.juc1;import cn.hutool.core.thread.ThreadUtil;import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.LockSupport;
import java.util.concurrent.locks.ReentrantLock;/*** @author fhf* @since 2024/7/5*/
public class VisualVMThreadStatus {public static void main(String[] args) {VisualVMThreadStatus visualVMThreadStatus = new VisualVMThreadStatus();// 创建线程,但是不调用startvisualVMThreadStatus.create();// 调用sleep方法休眠visualVMThreadStatus.sleep();// 调用wait方法visualVMThreadStatus.callWait();// 调用wait(timeout)方法visualVMThreadStatus.callWaitTimeOut();// 同步代码块里面,一个能拿到锁,一个拿不到阻塞visualVMThreadStatus.sync();// juc包中的可重入锁,让线程lock拿不到锁visualVMThreadStatus.juc();// 调用LockSupper.park方法visualVMThreadStatus.lockSupport();for (; ; ) ;}private void create() {new Thread(() -> {for (; ; ) ;}, "1-start");}public void sleep() {new Thread(() -> {try {TimeUnit.DAYS.sleep(1);} catch (InterruptedException e) {throw new RuntimeException(e);}}, "2-sleep").start();}public void callWait() {new Thread(() -> {synchronized (this) {try {wait();} catch (InterruptedException e) {throw new RuntimeException(e);}}}, "3-wait").start();}public void callWaitTimeOut() {new Thread(() -> {synchronized (this) {try {wait(1000000);} catch (InterruptedException e) {throw new RuntimeException(e);}}}, "4-wait-timeout").start();}public void sync() {Object lock = new Object();new Thread(() -> {synchronized (lock) {for (; ; ) ;}}, "5-synchronized持有锁").start();ThreadUtil.sleep(100);new Thread(() -> {synchronized (lock) {System.out.println("t-synchronized等待锁");}}, "6-synchronized等待锁").start();}public void juc() {ReentrantLock r = new ReentrantLock();// 先占用锁r.lock();new Thread(() -> {// 这里就拿不到了r.lock();}, "7-juc-lock").start();}public void lockSupport() {new Thread(() -> {LockSupport.park();}, "8-lockSupport").start();}
}

按照上面的代码运行结果,查看VisualVM里面的线程可以得出以下结论:

  1. 新建一个线程,但是不调用start方法不会显示在列表中;
  2. 正常执行代码的线程,显示的是Running(运行)状态;
  3. 调用线程的sleep方法,显示的是Sleep(休眠)状态;
  4. 调用wait()方法和调用wait(timeout),显示的是Wait(等待)状态;
  5. 执行synchronized代码块(synchronized方法也一样)如果获取到了锁,显示的是Running运行状态;如果未获取到锁,显示的是Monitor(监视)状态。Monitor状态其实就是阻塞状态;
  6. 调用juc包下的ReentrantLock类的lock方法,未拿到锁的情况下,会显示Park(驻留)状态;
  7. 调用LockSupport.park()方法,会显示Park(驻留)状态。

在这里插入图片描述
我这个VisualVM是官网下载的新版,这个界面和java8自带的差别在于Monitor监视器的颜色,旧版的颜色在一些低质量显示器上还真的和park的颜色分不清
旧的截图:
在这里插入图片描述

线程转储中线程的状态

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

大模型时代的蓝海任务,GPT4V准确率不足10%,港科大发布指代理解基准RefCOCO

谈到多模态大模型的应用场景,除了生成任务以外,应用最广泛的可能就是在图像和视频中进行目标检测。 目标检测要求从图像中识别并标注出所有感兴趣的对象,并给每个对象分配一个类别标签。典型的目标检测方法会生成边界框,标记出图…

【js面试题】js的数据结构

面试题:说说你了解的js数据结构 JavaScript中的数据结构是编程的基础,它们帮助我们以高效的方式存储和操作数据。 下面将详细介绍 这些数据结构的来源、概念和应用场景。 数组 Array 来源: 数组是一种线性数据结构,起源于计算…

青岛外贸建站公司wordpress网站模板

电子数码wordpress网站模板 电子数码wordpress网站模板,做数码电子的生产厂家或外贸公司官方网站模板。 https://www.jianzhanpress.com/?p3161 金属不锈钢wordpress外贸主题 适合从事金属不锈钢生产、加式或做外贸的公司,简洁wordpress外贸主题模板…

Linux走进网络

走进网络之网络解析 目录 走进网络之网络解析 一、认识计算机 1.计算机的发展 2.传输介质 3.客户端与服务器端的概念 交换机 路由器 二、计算机通信与协议 1. 协议的标准化 2. 数据包的传输过程 OSI 协议 ARP协议 3. TCP/IP:四层模型 4. TCP三次握手和四次挥手…

BUG: npm error `electron_mirror` is not a valid npm option

npm error electron_mirror is not a valid npm option 环境 windows 11 node v20.15.0 npm v10.7.0详情 在运行 npm run mirror 命令时出现错误。这是一个设置镜像的命令。 我是没事干了,运行这个命令,这个命令在我这里根本就是运行不了。这个命令一…

Vue2前端实现数据可视化大屏全局自适应 Vue实现所有页面自适应 Vue实现自适应所有屏幕

Vue自适应所有屏幕大小,目前页面自适应,尤其是数据可视化大屏的自适应更是案例很多 今天就记录一下使用Vue全局自适应各种屏幕大小的功能 在Vue.js中创建一个数据大屏,并使其能够自适应不同屏幕大小,通常涉及到布局的响应式设计、CSS媒体查询、以及利用Vue的事件系统来处理…

【matlab】【python】爬虫实战

目录 引言 具体步骤 1.设置请求选项 2.发送请求并获取响应 3.设置正则表达式 4.执行正则表达式匹配 matlab完整代码 python代码示例 引言 在当今这个信息爆炸的时代,数据已成为推动社会进步和企业发展的核心动力之一。随着互联网的普及和技术的飞速发展&am…

Why Can’t Robots Click The “I’m Not a Robot” Box On Websites?

Clicking a tiny box tells Google all they need to know about your humanity 你好,我是 Jiabcdefh。 if you’ve browsed the internet for any amount of time, you will likely come across a reCAPTCHA box. These boxes appear when you first enter certain websites…

RIP环境下的MGRE网络

首先将LSP的IP地址进行配置 其他端口也进行同样的配置 将serial3/0/1配置25.0.0.2 24 将serial4/0/0配置35.0.0.2 24 将GE0/0/0配置45.0.0.2 24 进行第二步 R1与R5之间使用ppp的pap认证 在R5中进行配置 在aaa空间中创建账号和密码 将这个账号和密码使用在ppp协议中 然后…

用XDR的思路保护API安全

云计算飞速发展的今天,越来越多应用程序已经转为选择云原生架构,这就少不了Serverless、微服务、API等技术的协助。 但同时也有越来越多的企业认识到,一定程度的“API安全”在整体安全与合规态势中发挥着至关重要的作用。然而,对…

【LLM】二、python调用本地的ollama部署的大模型

系列文章目录 往期文章: 【LLM】一、利用ollama本地部署大模型 目录 文章目录 前言 一、ollama库调用 二、langchain调用 三、requests调用 四、相关参数说明: 总结 前言 本地部署了大模型,下一步任务便是如何调用的问题&#xff0c…

2.硬盘和内存区别

2.2 磁盘比内存慢几万倍? 存储器方面的设备,分类比较多,那我们肯定不能只买一种存储器,比如你除了要买内存,还要买硬盘,而针对硬盘我们还可以选择是固态硬盘还是机械硬盘。 相信大家都知道内存和硬盘都属…

使用 Hugging Face 模型时遇到的问题

题意: I load a float32 Hugging Face model, cast it to float16, and save it. How can I load it as float16? 我加载了一个float32的Hugging Face模型,将其转换为float16,并保存了。我该如何以float16的形式加载它呢? 问题…

理解算法复杂度:时间复杂度详解

引言 在计算机科学中,算法复杂度是衡量算法效率的重要指标。时间复杂度和空间复杂度是算法复杂度的两个主要方面。在这篇博客中,我们将深入探讨时间复杂度,了解其定义、常见类型以及如何进行分析。 什么是时间复杂度? 时间复杂度…

昇思25天学习打卡营第4天|MindSpore数据集和数据变换

# 打卡 目录 # 打卡 Dateset:Pipeline 的起始 具体步骤 数据处理 Pipeline 代码例子 内置数据集的情况 自定义数据集的情况 可迭代的数据集 生成器 Transforms:数据预处理 代码例子 通用变换Compose 文本变换 Text Lambda变换 Dateset&…

【2024华为HCIP831 | 高级网络工程师之路】刷题日记(BGP)

个人名片:🪪 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️ 零基础学Java——小白入门必备🔥重识C语言——复习回顾🔥计算机网络体系———深度详讲HCIP数通工程师-刷题与实战🔥🔥

ubuntu22.04搭建mysql5.7

1.1 下载mysql安装包 MySQL下载地址:MySQL :: Download MySQL Community Server (Archived Versions) #下载wget https://cdn.mysql.com/archives/mysql-5.7/mysql-server_5.7.29-1ubuntu18.04_amd64.deb-bundle.tar#解压tar -xvf ./mysql-server_5.7.29-1ubuntu18…

bash: redi-cli: 未找到命令...

问题描述 在执行命令:redi-cli --bigkeys 提示:bash: redi-cli: 未找到命令... 确定服务器是否有Redis进程 ps -ef | grep redis查找Redis 文件信息 find / -name "redis-*"进入到当前目录 cd /usr/bin/再次执行命令 涉及redis-cli 连…

2.作业2

目录 1.作业题目 A图 B代码 2.css盒子模型 0.css盒子模型 1.外边距(margin) 2.边框(border) 3.内边距(padding) ​编辑 3.GET方法与POST方法的区别 学习产出: html的作业 1.作业题目 A图…

九科bit-Worker RPA 内容学习

简介: 什么是RPA? RPA(Robotic Process Automation,机器人流程自动化)本质上是一种“AI数字员工”,针对企业中存在的大批量、重复性、机械化人工操作,通过模拟人的工作流程使之实现自动化。 b…