初识线程

简介: 在 Java 多线程编程中,线程对象名与线程名称是两个不同概念。对象名是代码中引用线程对象的变量名,如 `t1`,而线程名称是线程实例在 JVM 中的标识,可通过 `setName()` 或构造函数设置。若不显式设置,Java 会分配默认名称如 `Thread-0`。通过 `Thread.currentThread().getName()` 可获取当前执行线程的名称。

线程对象名不是线程的名字

setName()常用设置线程名称

java

DrawMoneryThread t1 = new DrawMoneryThread(b1, a1, 100000);


这里的t1只是 Java 程序中对线程对象的引用变量名,用于在代码中访问该线程对象。而线程的名称是线程对象内部的一个属性,用于标识线程在 JVM 中的运行实例。


当你在线程内部调用:


java

Thread.currentThread().getName();


这行代码返回的是当前正在执行的线程实例的名称,而不是你定义的引用变量名t1。

线程名称的默认规则

如果你不显式设置线程名称,Java 会为每个线程分配一个默认名称,格式通常为:


  • Thread-0、Thread-1、Thread-2 等(对于直接继承Thread类的线程)
  • 或者根据线程池或执行器的命名规则生成

显式设置线程名称

有两种常见方法可以为线程设置自定义名称:

方法 1:通过Thread构造函数设置(适用于继承Thread类的方式)

java

public class DrawMoneryThread extends Thread {
    public DrawMoneryThread(String name) {
        super(name); // 调用父类Thread的构造函数设置名称
    }
    
    @Override
    public void run() {
        System.out.println("当前线程名称: " + Thread.currentThread().getName());
    }
}
// 创建线程时指定名称
DrawMoneryThread t1 = new DrawMoneryThread("取款线程-1");
t1.start();

方法 2:通过setName()方法设置(适用于实现Runnable接口的方式)

java

public class DrawMoneryThread implements Runnable {
    @Override
    public void run() {
        System.out.println("当前线程名称: " + Thread.currentThread().getName());
    }
}
// 创建线程时设置名称
DrawMoneryThread task = new DrawMoneryThread();
Thread t1 = new Thread(task, "取款线程-1"); // 通过Thread构造函数设置名称
t1.start();
// 或者创建后再设置
Thread t2 = new Thread(task);
t2.setName("取款线程-2");  
t2.start();

可以混用,并不一定继承了thread类的只能用构造器方法,也可以用setname方法

相关文章
|
安全 微服务
(七)、Eureka自我保护
(七)、Eureka自我保护
(七)、Eureka自我保护
|
7月前
|
SQL 弹性计算 安全
购买阿里云活动内云服务器之后,后续购买和挂载云盘、设置云服务器密码与安全组教程参考
多数用户通过阿里云活动购买云服务器,这种方式价格实惠且流程简单。但活动所购服务器一般仅含系统盘,因此用户需自行购买并挂载数据盘,同时设置密码和安全组。本文介绍了如何购买和挂载云盘作为数据盘,并提醒用户选择与云服务器相同的地域和可用区,以及在挂载前检查实例和云盘状态。此外,还简要提及了云服务器密码设置和安全组配置。用户在购买前可了解阿里云优惠券活动,以降低购买成本。
602 2
|
9月前
|
人工智能 自然语言处理 数据库
【2026最新最全】AI架构能力-新一代架构图绘制方法论
本文介绍传统IT架构图绘制的痛点,如效率低、易出错、维护难等,并引入AI架构图绘制技术,结合Mermaid、ProcessOn、next-ai-draw-io等工具,提升绘图效率与质量。通过实战案例展示如何用AI快速生成微服务架构图,并对比各类工具优劣,提供选型指南与最佳实践,助力团队高效协作与文档化。
4263 2
|
6月前
|
人工智能 Linux API
OpenClaw全平台部署终极指南|阿里云轻量服务器+本地三系统+千问Qwen3.6-Plus/Coding Plan配置+高频问题排查手册
本文完整覆盖2026年阿里云轻量服务器部署及本地MacOS/Linux/Windows11部署OpenClaw(Clawdbot)步骤流程及阿里云千问Qwen3.6-Plus配置或市场上免费大模型Coding Plan API配置及常见问题解答,从部署前预检到服务优化,从核心配置到问题排查,全程实战化、可复制、零冗余。掌握本文内容,即可避开90%的新手陷阱,快速让OpenClaw成为办公、学习、生活中的高效自动化助手,真正释放AI的落地价值。
704 0
|
人工智能 资源调度 数据可视化
ModelScope魔搭25年7月发布月报
七月流火,这个夏天火热的开场已然揭开。6月30号,我们在北京举办了首届魔搭开发者大会(ModelScope DevCon 2025),邀请了国内外知名的开源模型,以及头部开源工具的研发团队,与广大开发者共聚一堂进行分享。顶尖的AI 模型首次从线上 Hub走进线下盛会,为大家呈现了一场“模型全明星”盛会。同时我们还邀请了社区开发者参加我们的“搭友之夜”(aka 大规模面基大会)。大会分享场场爆满,现场只能用一句话来描述:“好~多~人~啊”,不提前占位根本挤不进去~~
729 3
|
10月前
|
机器学习/深度学习 算法 索引
YOLOv11改进 - 卷积Conv | 加权卷积wConv:无损替换标准卷积,增强空间建模与特征提取质量
本文提出加权卷积(wConv),通过引入距离感知的密度函数,自适应调整邻域像素权重,突破传统卷积等权局限。结合双优化器策略,在不增加参数量的前提下提升特征提取能力。集成于YOLOv11后显著降低损失、提高检测精度,适用于图像去噪等密集预测任务。
|
消息中间件 Java Kafka
Golang 语言中 kafka 客户端库 sarama
Golang 语言中 kafka 客户端库 sarama
1015 0
|
机器学习/深度学习 人工智能 自然语言处理
谷歌开源最精确自然语言解析器SyntaxNet的深度解读:一次关键进步以及一个重要工具
自然语言理解研究中,如何处理语言歧义是个难题。 SyntaxNet 将神经网络和搜索技术结合起来,在解决歧义问题上取得显著进展:SyntaxNet 能像训练有素的语言学家一样分析简单句法。今天,谷歌开源了SyntaxNet,也发布了针对英语的预训练解析程序 Parsey McParseface。除了让更多人使用到最先进的分析技术之外,这次开源举措也有利于公司借助社区力量加快解决自然语言理解难题的步伐,惠及谷歌业务。
1383 0
谷歌开源最精确自然语言解析器SyntaxNet的深度解读:一次关键进步以及一个重要工具
|
安全 Linux Shell
Linux | Rsync 命令:16 个实际示例(上)
Linux | Rsync 命令:16 个实际示例(上)
1051 0
Linux | Rsync 命令:16 个实际示例(上)
|
存储 缓存 运维
从Redis7.0发布看Redis的过去与未来
经历接近一年的开发、三个候选版本,Redis 7.0终于在2022年4月27日正式发布,这是Redis历史上改变最大的一个大版本。Redis 7.0包含50多个新命令及大量核心特性。不仅能够解决用户使用中的诸多问题也进一步拓展了Redis的使用场景。阿里云作为Redis开源社区的核心贡献者,参与了Redis 7.0的Roadmap制定并实现了Redis 7.0中的部分重要核心特性。本文将介绍Redis 7.0的核心特性及Redis开源社区的最新消息,然后让我们一起打开脑洞,探索Redis的未来。
3164 155