1

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

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
  • 孩子 - 再见
4

2 回答 2

4

编辑:

有什么方法可以为 run 方法添加参数吗?或者也许在子线程中我们可以获得父名?

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

如何找到父线程的名称?

你当然可以这样做:

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

这将新创建的线程的名称设置为与其父级的当前线程相关。但是通过您所做的编辑,我看到您无法更改线程的分叉方式。

正如我在其他答案中提到的那样,我认为除了名称之外,您将不得不使用其他一些机制来对线程进行分组。

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

于 2012-08-07T13:55:28.167 回答
-1

通过使用Thread.setName().

在这里阅读更多

于 2012-08-07T14:09:16.620 回答