Thread.currentThread()。getName()和getName()之间有什么区别?

时间:2012-04-19 15:21:14

标签: java multithreading

特定Thread实例的静态Thread.currentThread().getName()getName()之间有什么区别?

2 个答案:

答案 0 :(得分:7)

区别在于getName()是一个实例方法,这意味着它在Thread类的实例上运行。

Thread.getCurrentThread()是一个类或静态方法,这意味着它不在Thread的实例上运行,而是在其类上运行。

最终区别在于:如果您致电Thread.currentThread().getName()currentThread()将返回Thread的实例,然后您可以在该实例上调用getName()。您无法致电Thread.getName(),因为必须在getName()的实例上调用Thread

答案 1 :(得分: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();
}