如何从父级获取线程名称?

时间:2012-08-07 13:53:18

标签: java multithreading

如何在这种情况下为父母和孩子设置同名

public class ComponentA {
    public static void main(String[] args){

        Bye bye = new Bye();
        Thread t = new Thread(bye);
        t.start();
    }
}

我无法添加t.setName(Thread.currentThread().getName());,因为我需要避免更改代码。我正在寻找可以从AspectJ类申请的解决方案。 有没有办法让run方法参数?或者也许在子线程中我们可以获得parent name

修改

我的意思是:

  • parent - ComponentA中的main
  • 孩子 - 在Bye中运行

2 个答案:

答案 0 :(得分:4)

修改

  

有没有办法让参数运行方法?或者也许在子线程中我们可以得到父名?

一旦线程启动并且调用了run()方法,就无法找到父线程的名称,如本答案中所讨论的那样:

  

How to find the name of the parent thread?

你当然可以这样做:

Bye bye = new Bye();
Thread t = new Thread(bye, Thread.currentThread().getName() + "-child");
t.start();

这将新创建的线程的名称设置为与当前线程(即它的父线程)相关。但是通过你做的编辑,我发现你无法改变线程的分叉方式。

正如我在其他答案中所提到的,我认为你将不得不使用除名称之外的其他一些机制来分组你的线程。

run()方法内部,您当然可以调用将当前线程添加到某些线程集合中以进行报告。

答案 1 :(得分:-1)

使用Thread.setName()

Read More here