326 设置、获取线程名称

14 篇文章 0 订阅
本文介绍了如何在E325项目中设置和获取线程名称,包括使用Thread类的setName方法,以及通过构造函数为线程指定名称。同时,讲解了如何通过currentThread方法查看main方法执行的线程。实例演示了MyThread类的使用,展示了线程名称的动态显示。
摘要由CSDN通过智能技术生成

326 设置和获取线程名称

(查看源码看了很多。。。)

在e325中,运行后的结果无法直接看出是哪个线程的,这节课解决这个问题。

【Thread类中设置、获取线程名称的方法】

void setName(String name)

字面意思

String getName()

【代码思路】

getName方法

在sout内加上,运行后写屏了Thread-0、Thread-1

ctrl b查看getName的源码,如下

public final String getName() {

        return name;

    }

public Thread(Runnable target) {

        this(null, target, "Thread-" + nextThreadNum(), 0);

    }

private static int threadInitNumber;

    private static synchronized int nextThreadNum() {

        return threadInitNumber++;

    }

由此可知,若未设置线程名称,且调用getName方法,则返回"Thread-" + nextThreadNum()格式的线程名称,nextThreadNum从0开始,每执行一次则++

可以不用setName方法,用带参构造方法给线程设置名称吗?

——可以,在MyThread类中写一个带String参数的构造方法,然后带参创建MyThread对象即可

如何查看main方法的线程?

——使用currentThread方法,返回当前正在执行的线程对象

---------------------------------------------

package e325aso;

public class MyThread326 extends Thread {

public MyThread326(){}

public MyThread326(String name){

    super(name);

}

    @Override

    public void run() {

        for (int i = 0; i < 5; i++) {

            System.out.print(getName()+":"+i+".");

        }

    }

}

---------------------------------------------

package e325aso;

public class MyThreadDemo326 {

    public static void main(String[] args) {

        MyThread326 my0 = new MyThread326();

        my0.start();

        MyThread326 my1 = new MyThread326();

        my1.setName("MOLE");

        my1.start();

        MyThread326 my2 = new MyThread326("RAT");

        my2.start();

        System.out.println(Thread.currentThread().getName());

    }

}

/*

main

Thread-0:0.Thread-0:1.Thread-0:2.Thread-0:3.Thread-0:4.RAT:0.RAT:1.RAT:2.RAT:3.RAT:4.MOLE:0.MOLE:1.MOLE:2.MOLE:3.MOLE:4.

 */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值