开发者社区> 问答> 正文

java中this和Thread.currentThread()区别

public class hello extends Thread {

public hello(String name){
super(name);
System.out.println("Thread.currentThread().getname()="+Thread.currentThread().getName());
    System.out.println("This.getName="+this.getName());
    }
public void run(){

    System.out.println("Thread.currentThread().getname()="+Thread.currentThread().getName());

    System.out.println("This.getName="+this.getName());
}
public static void main(String[] args){

 Thread t1=new Thread(new hello("A"));
 t1.setName("B");
 t1.start();
}
}

得到`Thread.currentThread().getname()=main
This.getName=A
Thread.currentThread().getname()=B
This.getName=A`
为什么会得到B和A不一样的名字

展开
收起
蛮大人123 2016-03-23 17:37:41 3370 0
3 条回答
写回答
取消 提交回答
  • this表示当前的对象, Thread.currentThread()表示的是当前的线程
    2019-07-17 19:11:35
    赞同 展开评论 打赏
  • 技术源于生活

    new Hello()是main线程执行的,所以当前线程是main,构造方法里面的name是传入的参数A;当执行run里面的方法的时候当前线程就是t1.setName(B)里面的B了,this.getName()还是你再构造方法里面传入进去的A

    2019-07-17 19:11:35
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    this是线程对象本身,而后者是当前正在运行的线程对象。但是不一定是同一个线程对象,因为this这个线程不一定正是当前正在运行的线程。

    2019-07-17 19:11:35
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载