currentThread().getName()方法:返回代码段正在被哪个线程调用的name信息。
this.getName()方法:是获取当前对象的名字,只是单纯的方法调用
class CountOperate extends Thread{
public CountOperate(){
System.out.println("CountOperate begin"); //CountOperate begin
System.out.println("Thread.currentThread.getName(): "+Thread.currentThread().getName()); //main
System.out.println("this.getName(): "+this.getName()); //Thread-0
System.out.println("CountOperate end"); //CountOperate end
}
@Override
public void run(){
System.out.println("run begin"); // run begin
System.out.println("Thread.currentThread.getName(): "+Thread.currentThread().getName()); // A
System.out.println("this.getName(): "+this.getName()); //Thread-0
System.out.println("run end"); //run end"
}
}
public class Run_ThreadName{
public static void main(String [] args){
CountOperate c=new CountOperate();
Thread t1=new Thread(c);
t1.setName("A");
t1.start();
}
}
运行结果:
/**运行 CountOperate c=new CountOperate()时,会调用CountOperate 的构造方法,
** Thread.currentThread.getName()是获得调用这个方法的线程的名字,在main线程中调用故name是main
** this.getName() 是获取当前CountOperate 对象的名字,只是单纯的方法调用,由于没有重写这个方法,所以调用的是父类Thread 中的方法
** t1.setName("A"),修改了t1的名字,和 thread对象没有关系,所以run方法中this.getName()输出还是Thread-0
**/