如何在这种情况下为父母和孩子设置同名?
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
?
修改
我的意思是:
答案 0 :(得分:4)
修改强>
有没有办法让参数运行方法?或者也许在子线程中我们可以得到父名?
一旦线程启动并且调用了run()
方法,就无法找到父线程的名称,如本答案中所讨论的那样:
你当然可以这样做:
Bye bye = new Bye();
Thread t = new Thread(bye, Thread.currentThread().getName() + "-child");
t.start();
这将新创建的线程的名称设置为与当前线程(即它的父线程)相关。但是通过你做的编辑,我发现你无法改变线程的分叉方式。
正如我在其他答案中所提到的,我认为你将不得不使用除名称之外的其他一些机制来分组你的线程。
在run()
方法内部,您当然可以调用将当前线程添加到某些线程集合中以进行报告。
答案 1 :(得分:-1)
使用Thread.setName()
。