多线程this.getName()和Thread.currentThread().getName()
来源:互联网 发布:放弃后的心疼网络歌曲 编辑:程序博客网 时间:2024/06/05 15:40
最近在看《java多线程编程核心技术》这本书,在看到currentThread()方法这节时,遇到了不懂的问题,后来查阅了一些资料,整理如下。
MyThread.java
public class MyThread extends Thread {public MyThread() {// TODO Auto-generated constructor stubSystem.out.println("MyThread--begin");System.out.println("Thread.currentThread().getName()="+Thread.currentThread().getName());System.out.println("this.getName()="+this.getName());System.out.println("MyThread---end");}public void run(){System.out.println("run---begin");System.out.println("run.currentThread().getName()="+Thread.currentThread().getName());System.out.println("this.getName()="+this.getName());System.out.println("run---end");}}Run.java
public class Run {public static void main(String[] args){MyThread thread=new MyThread();Thread t1=new Thread(thread);t1.setName("A");t1.start();}}结果如下:
解释:
首先要明白的一点是Thread t1=new Thread(thread),t1只是调用了thread里面的run方法而已,t1和thread是两个完全不一样的对象,在开始执行
MyThread thread=new MyThread()时会调用MyThread的构造方法。Thread.currentThread.getName()是获取当前现成的名字,构造器当中返回的自然是main,this.getName()获取的是thread对象的名字,因此是Thread-0。t1.setName("A")仅仅是改变了t1的名字,和thread对象没有关系。Thread的源代码如下:
现在把Run改成如下:
public class Run {public static void main(String[] args){MyThread thread=new MyThread();//Thread t1=new Thread(thread);//t1.setName("A");//t1.start();thread.setName("B");thread.start();}}结果如下:
这里的threa.setName()就是直接修改的本身的线程名字,因此,this.getName()也会变。但是因为在执行构造方法的时候thread线程还没有执行,所以输出this.getName()=Thread-0
阅读全文
0 0
- 多线程this.getName()和Thread.currentThread().getName()
- 多线程中this.getName()和Thread.currentThread().getName()
- Thread.currentThread().getName() 和 this.getName()详解
- JAVA 多线程 this.getName()与Thread.currentThread().getName()
- 多线程当中this.name和Thread.currentThread.getName的区别
- 并发this.getName()和Thread.currentThread().getName()区别
- Thread.currentThread().getName() 和 this.getName()区别详解
- 有关多线程中this.getName()和Thread.currentThread().getName()返回名字不一样的问题
- 多线程中this.getName()和Thread.currentThread().getName()返回名字不一样的问题
- 【java】多线程中Thread.currentThread().getName()和this.getName()的区别
- Java多线程中this.getName()和Thread.currentThread.getName()的区别?
- Thread.CurrentThread.getName 与 this.getName()
- currentThread().getName和this.getName()的区别
- Thread.currentThread().getName() ,对象实例.getName() 和 this.getName()区别
- 多线程的this.getName()与Thread.currentThread().getName为何有时不一样
- Thread.currentThread().getName()与this.getName()的区别
- Thread.currentThread().getName()…
- Thread.currentThread().getName()
- HDU 5713 K个联通块(状压DP)
- 卷积神经网络CNN-目标分类
- Silverlight一直报错 4004 资源无法访问 添加字体也无法解决
- varnish
- 浅淡HTML5移动Web开发
- 多线程this.getName()和Thread.currentThread().getName()
- Linux下C语言执行MySQL语句
- 2.3.1freetype理论介绍、矢量字体原理
- 深度学习--激活函数的对比分析
- 单点登录原理与简单实现
- linux 127.0.0.1 0.0.0.1 区别
- Java 内存模型及GC原理
- android 退出登录
- 如果看了此文你还不懂傅里叶变换,那就过来掐死我吧【完整版】