java中如何获取线程名称

 更新时间:2023年06月12日 16:36:03   作者:瓜导  
这篇文章主要介绍了java中如何获取线程名称问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

java获取线程名称

调用MyThread中的方法

package cn.itcast.day09.getName;
import cn.itcast.day09.getName.MyThread;
/*
   线程的名称:
    主线程:main
    新线程:Thread-1,Thread-0,Thread-2
 */
public class Demo01Thread {
    public static void main(String[] args) {
        //3.创建Thread类的子类对象
        MyThread mt=new MyThread();
        //调用Thread类中的方法start方法,开启新的线程,执行run方法
        mt.start();
        new MyThread().start();
        new MyThread().start();
        System.out.println(Thread.currentThread().getName());
    }
}
package cn.itcast.day09.getName;
/*
    获取线程的名称:
    1.使用Thread类中的方法getName()
        String gerName()返回该线程的名称
    2.可以先获取到当前正在执行的线程,使用线程中的方法getName()获取线程的名称
        static Thread currentThread() 返回对当前正在执行的线程对象的引用
 */
public class MyThread extends Thread {
    // 重写 Thread类中的run方法,设置线程任务
    public void run() {
        //获取线程的名称:
        //使用Thread类中的方法getName()
//        String name = getName();
//        System.out.println(name);
        // static Thread currentThread() 返回对当前正在执行的线程对象的引用
//        Thread t=Thread.currentThread();
//        System.out.println(t);
//
//        String name = t.getName();
//        System.out.println(name);
        System.out.println(Thread.currentThread().getName());
    }
}

获取线程 ID 和当前线程

点睛

1 API

// 获取线程唯一 ID
public long getId()
// 获取线程名称
public final String getName()
// 当前执行线程的引用
public static native Thread currentThread()

2 说明

线程的 ID 在整个 JVM 进程中都会是唯一的,并且从 0 开始逐次递增。

mian 线程的 getId() 并不等于0,这是因为在一个 JVM 进程启动的时候,实际上是开辟了很多个线程,自增序列已经有了一定的消耗,因此我们自己创建的线程并不是从0开始的。

实战

1 代码

package concurrent;
public class ThreadIDAndName {
    public static void main(String[] args) {
        Thread thread = new Thread() {
            public void run() {
                System.out.println(Thread.currentThread() == this);
                System.out.println("sub Thread  name is " + Thread.currentThread().getName());
                System.out.println("sub Thread is " + Thread.currentThread().getId());
            }
        };
        thread.start();
        System.out.println("main Thread name is " + Thread.currentThread().getName());
        System.out.println("main Thread id is " + Thread.currentThread().getId());
    }
}

2 测试

main Thread name is main
true
main Thread id is 1
sub Thread  name is Thread-0
sub Thread is 12

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中的引用和动态代理的实现详解

    Java中的引用和动态代理的实现详解

    这篇文章主要介绍了Java中的引用和动态代理的实现详解,涉及Java中的引用类型,JVMGC的可达性分析,代理模式等相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • java中的基础运算符

    java中的基础运算符

    这篇文章主要介绍了Java基本数据类型和运算符,结合实例形式详细分析了java基本数据类型、数据类型转换、算术运算符、逻辑运算符等相关原理与操作技巧,需要的朋友可以参考下
    2021-08-08
  • Java局部内部类和匿名内部类定义与用法实例分析

    Java局部内部类和匿名内部类定义与用法实例分析

    这篇文章主要介绍了Java局部内部类和匿名内部类,结合实例形式分析了java局部内部类和匿名内部类相关定义、原理与用法,需要的朋友可以参考下
    2019-08-08
  • java中的HashSet与 == 和 equals的区别示例解析

    java中的HashSet与 == 和 equals的区别示例解析

    HashSet是Java中基于哈希表实现的集合类,特点包括:元素唯一、无序和可包含null,本文给大家介绍java中的HashSet与 == 和 equals的区别,感兴趣的朋友一起看看吧
    2025-02-02
  • Java高并发场景下的 HttpClient请求优化实现

    Java高并发场景下的 HttpClient请求优化实现

    本文主要介绍了Java高并发场景下的 HttpClient请求优化实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • Arrays.sort(arr)是什么排序及代码逻辑

    Arrays.sort(arr)是什么排序及代码逻辑

    在学习过程中观察到Arrays.sort(arr)算法可以直接进行排序,但不清楚底层的代码逻辑是什么样子,今天通过本文给大家介绍下Arrays.sort(arr)是什么排序,感兴趣的朋友一起看看吧
    2022-02-02
  • SpringBoot使用阿里oss实现文件上传的流程步骤

    SpringBoot使用阿里oss实现文件上传的流程步骤

    云服务指的就是通过互联网对外提供的各种各样的服务,比如像:语音服务、短信服务、邮件服务、视频直播服务、文字识别服务、对象存储服务等等,本文通过代码示例和图文给大家介绍了SpringBoot使用阿里oss实现文件上传的流程步骤,需要的朋友可以参考下
    2025-01-01
  • Java对象以Hash结构存入Redis详解

    Java对象以Hash结构存入Redis详解

    这篇文章主要介绍了Java对象以Hash结构存入Redis详解,和Java中的对象非常相似,却不能按照Java对象的结构直接存储进Redis的hash中,因为Java对象中的field是可以嵌套的,而Redis的Hash结构不支持嵌套结构,需要的朋友可以参考下
    2023-08-08
  • Java定义形式及可变参数实例解析

    Java定义形式及可变参数实例解析

    这篇文章主要介绍了Java定义形式及可变参数实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Java BigDecimal正确用法详解

    Java BigDecimal正确用法详解

    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理
    2022-10-10

最新评论