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か?

編集:

つまり:

  • 親 - ComponentA のメイン
  • child - Bye で走る
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 に答える