Thread : currentThread().getName()和getName()的区别

如下的code:


public class Thread_getName2 extends Thread {
	public void run() {
		//System.out.println(getName());
		System.out.println(currentThread().getName());
	}

	public static void main(String[] args) {
		Thread_getName2 t = new Thread_getName2(); 
		t.start(); 
		t.run();   
       }
}


  如果调用this.getName(),打印结果如下:


 t.start(); // Thread-0
 t.run();   // Thread-0


 调用currentThread().getName(),打印结果如下:


 t.start(); // Thread-0
 t.run();   // main


 以上哪种结果才是正确的呢?

 应该是第二种currentThread().getName()

 首先可以理解t.run()方法应该是由主线程调用的,而直接调用getName()时却打印出了Thread-0,这是不正确的。

 

那为什么getName()会产生这样的结果呢?

首先Thread_getName2 t = new Thread_getName2();

这个时候如果打印下t,会发现t的值为: Thread[Thread-0,5,main],这个可以看Thread类的toString()方法,


 

ThreadGroup group = getThreadGroup(); 
// java.lang.ThreadGroup[name=main,maxpri=10]

if (group != null) {
    return "Thread[" + getName() + "," + getPriority() + "," + 
               group.getName() + "]";
} 
		   
		

 

 

而以下两种方式是一样的

 

System.out.println(getName());
System.out.println(this.getName());

 

而this就是当前的t,所以t.run()也会打印出Thread-0。


通过以上的比较,如果要得到准确的线程的名称,必须要先调用currentThread()得到当前是哪个线程,而后调用getName()才能得出正确的结果。

如果单单只是调用getName()则会产生错误的结果。






 

Hexo博客使用PDF.js clone了一个pdf.js 然后兴高采烈地到文章里使用{% pdf %}标签 结果浏览器弹出了个下载框(使用GitHub的raw) 不知道是不是因为使用GitHub的原因导致这个问题 后来我测试的时候报了个错 优快云上的解决方法 到时候我再试试把资源放回lib/里面看看行不行 目录1.clone1.1.官方方法1.2.NexT主题方法1.3.补充2.修改文件2.1.修改viewer.htm... 阅读详情

相关推荐

第5.1节 构网控制:电压源特性与电压调节

摘要: 构网型变流器的核心物理本质是作为可控交流电压源,通过戴维南等效模型(受控电势源+低输出阻抗)自主建立并调节电压,增强电网电压刚度。其电压调节通过无功-电压闭环控制实现,内环为自动电压调节器(AVR),外环为无功-电压下垂特性,模拟同步发电机功能。关键技术包括自适应增益、虚拟阻抗补偿及动态限流策略,以应对弱电网稳定性、故障过流等问题。该设计满足《规范》对电压调节范围、动态无功支撑的要求,是高比例新能源电力系统电压稳定的关键解决方案。

技术工作者 1110

Thread.currentThread().getName()

| 背景 Thread.currentThread() 的返回值是在代码实际运行时候的线程对象,即当前线程。 java中的任何一段代码都是执行在某个线程当中的,执行当前代码的线程就是当前线程 本文中只围绕着Thread.currentThread().getName()所讲 由上可知,getName()返回的是当前线程的名称 | 代码示例 ★ 简单示例 ① 新建一个currentThread类,继承Thread类,并重写父类的run() 方法 public class

祝我飞黄腾达 8474

5分钟搞定!用FunASR在本地快速部署达摩院Paraformer语音识别模型(附常见问题解决)

本文详细介绍了如何在本地快速部署阿里达摩院开源的Paraformer语音识别模型。通过FunASR工具包,用户可在5分钟内完成环境配置、模型下载与基础识别,并掌握批量处理、性能调优及构建API服务等进阶技巧。文章重点解析了Paraformer的非自回归架构带来的速度优势,并提供了音频格式转换、依赖冲突、显存不足等常见问题的实战解决方案,助力开发者实现高效、离线的语音转写应用。

p1q2r的博客 708

Thread.currentThread().getName() 和 this.getName()区别详解

currentThread的详解 currentThread方法是Thread类的一个静态方法,用来获取当前运行的代码段,正在被哪个线程调用。我们先来看一眼源码。 是一个native方法。直接与系统层面做交互。 下面看一段代码 public static void main(String[] args) { String name = Thread.currentThread().getName(); System.out.println(name); }

经典鸡翅 2038

Claude Code Router 401错误修复

claude code router配置相关环境变量问题

如沐春风 6364

KEIL-MDK代码美化神器:AStyle配置全攻略(附常用参数详解)

本文详细介绍了如何在KEIL-MDK中配置和使用AStyle代码格式化工具,包括基础参数设置、高级格式控制、团队协作方案以及KEIL深度集成技巧。通过合理的AStyle配置,开发者可以显著提升代码风格一致性,优化团队协作效率,特别适合嵌入式开发项目。

weixin_30505225的博客 149

java Thread ,Thread.currentThread().getName() 的含义 & 普通成员变量是何时被赋值的

java Thread ,Thread.currentThread().getName() 的含义 this得到的是当前的对象。java为一个对象创建一个线程运行,这个线程也可以理解为一个“对象”,通过 Thread.currentThread() 得到它的引用 Thread.currentThread(): Returns a reference to the currently exe

G7N3F的博客 1256

Halcon实战:5分钟搞定金属表面划痕检测(附完整代码解析)

本文提供了一份基于Halcon的金属表面划痕检测实战指南。通过核心的动态阈值算法,快速从图像中提取局部对比度异常区域,并结合形态学后处理与特征筛选,精准识别划痕。文章详解了从代码搭建、参数优化到工业场景适配的全流程,帮助工程师在五分钟内构建稳定高效的机器视觉检测方案。

weixin_29084231的博客 497

【Java多线程与并发】——Thread.currentThread().getName()和this.getName()区别

首先,Thread.currentThread().getName() 和 this.getName()都可以用来获得线程的名称,但是它们是有区别滴,不能乱用! 下面分别对这两个方法进行剖析: 先来说说currentThread()方法,它的源码如下,它是一个本地方法,方法返回一个Thread对象:   /** * Returns a reference to the curr...

张小胖不胖 728

Ubuntu 20.04 环境下Autoware.universe 与 Carla 0.9.13 联合仿真

安装内容: ROS Galactic Autoware.universe based on ROS Galactic Carla 0.9.13 UnrealEngine 4.26 Openplanner (additional files: op-bridge/op-agent/scenariorunner/map data)

mhl1107的博客 1801

【深度学习|学习笔记】广义线性模型Generalized linear model(GLM)模型详解,附代码。

【深度学习|学习笔记】广义线性模型Generalized linear model(GLM)模型详解,附代码。

2401_89898861的博客 1879

Java编程:Thread.currentThread().getName() 和 this.getName()区别详解

Thread.currentThread().getName() 和 this.getName()区别详解 <<Java多线程编程核心技术>> 这本书里说到了这个: Thread.currentThread().getName() this.getName() 他俩是有区别的,得到的效应是不一...

weixin_30336061的博客 234

用 AI 设计力打造专业 UI_UX:在 Trea、Qoder 等 AI IDE 中集成 ui-ux-pro-max-skill

的核心是知识库Trea 和 Qoder 虽未被--ai all原生支持,但完全可通过@folder手动集成使用后,你的 AI 生成代码将从“功能可用”跃升至“设计专业”这是零成本提升产品质感的最佳实践之一🎨好的 UI 不应是设计师的专利,而是每个开发者的默认能力。然后在 Trea 或 Qoder 中输入—— 让 AI 成为你最懂设计的结对编程伙伴。

lpfasd123的博客 7109

多线程实现的三种方法、线程名称的获取

多线程实现的三种方法、线程名称的获取

changan 1219

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

多线程五种状态

使用继承Thread类还是使用实现Runnable接口好? 使用实现实现Runnable接口好,原因实现了接口还可以继续继承,继承了类不能再继承。 启动线程是使用调用start方法还是run方法? 开始执行线程 注意 开启线程不是调用run方法,而是start方法 调用run知识使用实例调用方法。 获取线程对象以及名称 常用线程api方法 sta...

Leon_Jinhai_Sun的博客 210

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java学习第二十二天

Java学习第二十二天知识点(线程) 程序:是一个指令和数据的有序集合. 进程:在运行中的程序 -进程是资源分配的最小单位 线程:在进程中[多个同时在执行]的任务 - 线程是cpu的最小调度单位 并行: 指两个或多个事件在同一时刻发生(同时发生) 并发: 指两个或多个事件在同一时间段内发生 线程类:Thread 1.线程的概念 1).进程中多个同时执行的任务 2).主方法程序运行就是打开一个进程,进程中至少存在一个线程 - 主线程 main 2.自定义线程的方式 1)自定义线程类 - 继承 Thread

qq_42788363的博客 179

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

进程和线程

进程和线程        进程和线程是什么?二者的区别是什么?        实现线程的方法?        线程中常用的方法?        线程中有哪些状态?      &nbs

qq_44383308的博客 203

【Java基础学习笔记】18、线程

文章目录线程并行与并发程序、进程和线程实现线程的3种方法①继承Thread类②实现Runnable接口③匿名内部类创建线程线程的状态常用API特殊:守护线程线程通信单向通信双向通信线程池Callable接口 线程 并行与并发  并行:两个线程同一时刻运行。  并发:两个线程在同一时间段运行。  多线程看似同时运行,实际上是微观的同一时间段中的不同时刻运行。 程序、进程和线程  程序:软件【如:电脑管家】  进程:运行时程序【如:正在运行的电脑管家】  线程:进程中的任务【如:电脑管家同时开始的电脑体检和.

qq_53743140的博客 195

java线程笔记

线程类:Thread 程序:是一个指令和数据的有序集合. 进程:在运行中的程序 - 进程是资源分配的最小单位 线程:在进程中[多个同时在执行]的任务 - 线程是cpu的最小调度单位 并行: 指两个或多个事件在同一时刻发生(同时发生) 并发: 指两个或多个事件在同一时间段内发生 主方法程序运行就是打开一个进程,进程中至少存在一个线程 - 主线程 main 自定义线程的方式 自定义线程类 - 继承 Thread 自定义线程类,继承Thread 重写run() 创建线程对象 start()开启线程 结

weixin_59998808的博客 126

线程类中如何调用service_你真的了解Java多线程吗?

一、程序、进程和线程、单核CPU和多核CPU、并行与并发什么是程序? 程序是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码。什么是进程? 进程是指程序的一次执行过程,或是正在运行的一个程序。当然,进程也是资源分配的单位,系统在运行时会为每个进程分配不同的内存区域。什么是线程? 线程是进程的进一步细化,是一个程序内部的一条执行路...

weixin_29915703的博客 2439

Thread.currentThread().getName() 和 this.getName()详解

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

u012665227的博客 5631

Thread.currentThread().getName()和this.getName()的区别

Thread.currentThread().getName()和this.getName()的区别 package com.zhenfen.currentThread; import com.mchange.net.SocketUtils; /** * @author 007 * @ClassName 类名称 * @Description 类描述 */ public class Count...

清晨清新清醒 470

this.getName()和Thread.currentThread().getName()的本质区别

​捞回一些Java基础。学JUC时回顾Thread类遇到的小困惑: this.getName()和Thread.currentThread().getName()的本质区别 先说明 start()和run方法的区别 (源码剖析) 先来个栗子: public static void main(String[] args) throws InterruptedException{ myThread t1 =new myThread(); //自定义了一个实现Thread类的线程类.

weixin_45517252的博客 492

JAVA多线程中getName()和Thread.currentThread().getName()方法的区别

先说定义: this.getName()是一个实例方法:反映这个实例的情况,实例指的就是这个类的对象 Thread.currentThread().getName() 是一个静态方法:反映这个实体的情况,实体却不一样,实体是指正在发生这个作用的实例 接下来具体说明 ··· class Demo1 extends Thread { String name; public Demo(String na...

weixin_43166982的博客 1356

Thread.currentThread.getName和this.getName的区别

this.getName this的意思是代表当前对象的。而this在线程的环境下,代表的是当前线程实例对象本身。所以this.getName是当前线程实例对象的线程名称是什么。 Thread.currentThread.getName Thread.currentThread.getName意思是在当前代码块中执行的线程名称是什么。 例子 public class MyThread extend...

还没见过大海 667

Thread.currentThread().getName与this.getName()理解

在看Java多线程编程核心技术,对Thread.currentThrad.getName()与this.getName运行结果产生了困惑,看了网上一些博客解释,自己也产生了些许想法。 线程类: public class MyThread extends Thread{ public MyThread() { System.out.println("构造方法"); Syste...

大鹏视界U 727
上一篇: Exception in thread "main" java.lang.NoClassDefFoundError
下一篇: 线程共享实例变量
yklovejava
博客等级 码龄14年 0粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值