JAVA 多线程 this.getName()与Thread.currentThread().getName()
2017-03-06 05:12
489 查看
this.getName()与Thread.currentThread().getName()的区别
首先一个类要实现多线程可以继承Thread。这里讲一下Thread中的getName()方法有差异。主要是用继承了Thread的线程对象初始化一个线程对象而引起的差异。分清楚线程对象。
主要分清一个是属于Student类的线程对象S0的,一个是属于Thread类的线程对象T0的。而通过Runable初始化Thread线程对象的时候,Runable里是没有getName(),线程执行时调用Thread.currentThread().getName()和对象调用getName()是一样的结果。
首先一个类要实现多线程可以继承Thread。这里讲一下Thread中的getName()方法有差异。主要是用继承了Thread的线程对象初始化一个线程对象而引起的差异。分清楚线程对象。
1.先看代码
class Student extends Thread{ String name; Student(String name){this.name=name;} public void run(){ System.out.println("name "+name); System.out.println("Thread.currentThread().getName() "+Thread.currentThread().getName()); System.out.println("this.getName() "+this.getName()); } } public class Test{ public static void main(String a[]) { Student S0=new Student("Jack"); Thread T0 = new Thread(S0); T0.start(); System.out.println("S0.getName "+S0.getName()); System.out.println("T0.getName "+T0.getName()); } }
2.运行结果
S0.getName Thread-0 T0.getName Thread-2 name Jack Thread.currentThread().getName() Thread-2 this.getName() Thread-0
3.分析总结
分清楚2个线程对象,S0与T0的区别。首先创建线程对象T0,需要一个对象,这里就是S0,而S0继承了Thread,所以new S0的时候,就已经初始化了getName(),没有重载,默认调用父类的方法,可以直接调用S0.getName()了。Thread.currentThread().getName()返回的是正在执行这条语句的线程,这里是在new T0的时候,是T0拥有的。这里this.getName()等价于S0.getName(),是this对象就是S0。Thread.currentThread().getName()等价于T0.getName(),是因为是线程T0就是正在执行的线程。主要分清一个是属于Student类的线程对象S0的,一个是属于Thread类的线程对象T0的。而通过Runable初始化Thread线程对象的时候,Runable里是没有getName(),线程执行时调用Thread.currentThread().getName()和对象调用getName()是一样的结果。
相关文章推荐
- Java多线程中this.getName()和Thread.currentThread.getName()的区别?
- 【java】多线程中Thread.currentThread().getName()和this.getName()的区别
- 多线程中this.getName()和Thread.currentThread().getName()
- java线程学习-Thread.currentTread().getName()和this.getName()的区别
- Java线程之this.currentThread().getName()和this.getName上的绕弯
- 多线程的this.getName()与Thread.currentThread().getName为何有时不一样
- 多线程中this.getName()和Thread.currentThread().getName()返回名字不一样的问题
- 有关多线程中this.getName()和Thread.currentThread().getName()返回名字不一样的问题
- 多线程里面this.getName()和currentThread.getName()有什么区别
- this与Thread.currentThread()的区别——java多线程编程核心技术
- java多线程中this与Thread.currentThread()返回值的引用问题
- java多线程中this与Thread.currentThread()返回值的引用问题
- Java 多线程 ---- 线程中this与 Thread.currentThread()线程的区别
- Thread.currentThread().getName() 和 this.getName()详解
- 创建Thread对象时this.getName()和Thread.currentThread().getName()的差异
- Java多线程之this与Thread.currentThread()的区别——java多线程编程核心技术
- java Thread ,Thread.currentThread().getName() 的含义 & 普通成员变量是何时被赋值的
- Thread.currentThread().getName()与this.getName()的区别
- Thread.currentThread().getName() ,对象实例.getName() 和 this.getName()区别
- Thread.currentThread().getName() 和 this.getName()区别详解