Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从父线程获取线程名称?_Java_Multithreading - Fatal编程技术网

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

Java 如何从父线程获取线程名称?,java,multithreading,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()),因为我需要避免更改代码。我正

在这种情况下,如何为父级和子级设置相同的名称

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
方法?或者在子线程中,我们可以得到父线程名

编辑:

我的意思是:

  • 组件A中的父-主
  • 儿童跑步再见
编辑:

有没有办法把一个参数放到run方法中?或者在子线程中我们可以得到父线程的名称

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

你当然可以做到:

Bye bye = new Bye();
Thread t = new Thread(bye, Thread.currentThread().getName() + "-child");
t.start();
这将新创建的线程的名称设置为与当前线程(其父线程)相关。但通过您所做的编辑,我发现您无法更改线程的分叉方式

正如我在另一个答案中提到的,我认为除了名称之外,您还必须使用其他一些机制来对线程进行分组


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

使用
thread.setName()


你说的“父母”和“孩子”是什么意思?您是否将
Bye
(必须在包含
Runnable
的继承树中)作为子对象,将
线程
对象
t
作为父对象?什么是父对象?你叫什么名字?你想从开始的线程(
t
)中获取主线程的名称吗?与:+1相关,你可以更改名称Java认为线程是(出现在线程转储中)非常感谢,为构造函数添加一个参数对我来说就足够了。我对BCEL做了一些研究。它可以在字节码中为方法添加额外的参数。哇!你肯定是认真对待改名的@trebuchet!对不起,这是我的错。它的设置名