3

Thread.currentThread().getName()静的とgetName()特定の Thread インスタンスの違いは何ですか?

4

3 に答える 3

7

違いはgetName()インスタンス メソッドです。つまり、Threadクラスのインスタンスで動作します。

Thread.getCurrentThread()クラスまたは静的メソッドです。つまり、インスタンスではThreadなく、そのクラスで動作します。

最終的な違いは次のとおりです。 を呼び出すとThread.currentThread().getName()currentThread()は のインスタンスを返し、そのインスタンスでThread呼び出すことができgetName()ます。のインスタンスで呼び出す必要があるため、呼び出すThread.getName()ことはできません。getName()Thread

于 2012-04-19T15:27:00.327 に答える
0

Thread.currentThread().getName(...)method は現在のスレッドgetName(...)の名前を参照しますが、Thread クラスの任意のインスタンスの名前を参照します。

于 2021-10-01T12:39:30.003 に答える
0

しかし、まったく逆に、 Thread.currentThread() は現在の Thread インスタンスを返します。したがって、答えは次のとおりです。2 つの関数は同じスレッドから同じです。これを試してください:

Thread nuThread = new Thread("Proba"){
  @Override
  public void run() {
    System.out.println(this.getName());
    Thread other = Thread.currentThread();
    System.out.println(other.getName());
    System.out.println(this==other ? "Same object":"Different object");
  }
};
nuThread.start();
try {
  nuThread.join();
} catch (InterruptedException e) {
  e.printStackTrace();
}
于 2018-09-04T18:08:57.743 に答える