特定Thread实例的静态Thread.currentThread().getName()
和getName()
之间有什么区别?
答案 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();
}