行业资讯 2025年08月6日
0 收藏 0 点赞 113 浏览 1923 个字
摘要 :

文章目录 1、Thread类获取当前线程对象 2、获取和设置线程名称 Thread构造器也是可以为线程设置名字的: 3、获取线程ID 4、总结 Java Thread类提供了获取当前线程对象……




  • 1、Thread类获取当前线程对象
  • 2、获取和设置线程名称
    • Thread构造器也是可以为线程设置名字的:
  • 3、获取线程ID
  • 4、总结

Java Thread类提供了获取当前线程对象、获取和设置线程名称、以及获取线程ID的API,我们来一起学习下。

1、Thread类获取当前线程对象

此方法是Thread类的静态方法,可以直接使用Thread类调用。
这个方法是在哪个线程执行中调用的,就会得到哪个线程对象。

方法名称 说明
static Thread currentThread() 返回对当前正在执行的线程对象的引用

代码示例:

 // 获取当前正在执行的线程
 Thread thread = Thread.currentThread();

2、获取和设置线程名称

获取和设置线程名称的API如下:

方法名称 说明
getName() 获取当前线程的名称,默认线程名称是Thread-索引
setName(String name) 将此线程的名称更改为指定的名称,通过构造器也可以设置线程名称

代码示例:

public class ThreadDemo {
    public static void main(String[] args) {
        Thread t1 = new MyThread();
        // 获取子线程默认名称
        System.out.println(t1.getName()); // Thread-0
        // 设置线程名称
        t1.setName(\"1号线程\");
        t1.start();

        Thread t2 = new MyThread();
        // 获取子线程默认名称
        System.out.println(t2.getName()); // Thread-1
        // 设置线程名称
        t2.setName(\"2号线程\");
        t2.start();

        // 获取当前线程对象(在这里也就是主线程)
        Thread m = Thread.currentThread();
        // 获取主线程默认名称
        System.out.println(m.getName());
    }
}

// 创建线程对象
class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            // 拿到线程的名称用于区分
            System.out.println(Thread.currentThread().getName() + \"输出: \" + i);
        }
    }
}

输出结果类似如下:

Thread-0
Thread-1
main
1号线程输出: 0
1号线程输出: 1
1号线程输出: 2
2号线程输出: 0
1号线程输出: 3
1号线程输出: 4
2号线程输出: 1
2号线程输出: 2
2号线程输出: 3
2号线程输出: 4

Thread构造器也是可以为线程设置名字的:

我们可以在子类MyThread中调用父类Thread构造器, 就可以在创建对象时为线程设置名称, 不需要单独调用setName方法

方法名称 说明
Thread(String name) 可以为当前线程指定名称
Thread(Runnable target) 封装Runnable对象成为线程对象
Thread(Runnable target ,String name ) 封装Runnable对象成为线程对象,并指定线程名称
public class ThreadDemo {
    public static void main(String[] args) {
        // 创建线程时使用构造器设置名称
        Thread t1 = new MyThread(\"1号线程\");
        t1.start();
        Thread t2 = new MyThread(\"2号线程\");
        t2.start();
    }
}

// 创建线程对象
class MyThread extends Thread {
    public MyThread() {
    }

    // 调用父类构造器
    public MyThread(String name) {
        super(name);
    }

    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            // 拿到线程的名称用于区分
            System.out.println(Thread.currentThread().getName() + \"输出: \" + i);
        }
    }
}

3、获取线程ID

public long getId()获取线程的唯一ID,,线程的ID在整个JVM进程中都会是唯一的。并且是从0开始逐次递增。在一个JVM进程启动的时候,实际上是开辟了很多个线程,自增序列已经有了一定的消耗,因此我们自己创建的线程可能并不是第0号线程。

代码示例:

// 获取线程长整型的 id,id 唯一
Thread t1 = new MyThread();
long id = t1.getId();

4、总结

以上就是Java Thread如何获取当前线程、线程名称和ID的全部API方法。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9663.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

986
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

463
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

347
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

455
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

516
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

831
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号