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() 返回当前的 Thread 实例。因此答案是:这两个函数来自同一个线程。试试这个:

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 回答
0

Thread.currentThread().getName(...)method 指的是当前线程的名称,而getName(...)指的是 Thread 类的任何实例的名称。

于 2021-10-01T12:39:30.003 回答