黑马程序员技术交流社区

标题: 线程的名字问题? [打印本页]

作者: 石三伢子1    时间: 2015-11-7 10:50
标题: 线程的名字问题?
线程有name的属性,为什么线程自定义的名字运行还是显示Thread-0呢?
class Xian extends Thread{
              private String name;
                Xian(String name){
                  this.name=name;
                }
              public void run(){
                     for(int x=0;x<99;x++){
                           System.out.println(Thread.currentThread.getName()+"hahaha,heihei,hiahiahia");
               }
      }
}
---------------------------------------------------------------
mian(String[] args){
            Xian x= new Xian("1号线程");
             x.start();
}
作者: 马尼玛    时间: 2015-11-7 13:28
xian构造方法中  super(name) 试一下
作者: 石三伢子1    时间: 2015-11-28 12:00
马尼玛 发表于 2015-11-7 13:28
xian构造方法中  super(name) 试一下

super(name);加到构造函数的首行,自定义线程的名字就改过来了;具体原因在哪里?
作者: Camwly    时间: 2015-11-28 12:08
石三伢子1 发表于 2015-11-28 12:00
super(name);加到构造函数的首行,自定义线程的名字就改过来了;具体原因在哪里? ...

super(name)是调用了父类的带String参数的构造器,父类的该构造器里面有逻辑能实现把String这个参数作为线程的名字。
作者: 石三伢子1    时间: 2015-11-28 12:26
Camwly 发表于 2015-11-28 12:08
super(name)是调用了父类的带String参数的构造器,父类的该构造器里面有逻辑能实现把String这个参数作 ...

是不是还是多态的特性啊,如果用this.name=neme;代替super(name);是不是初始化子类的name,如果子父类同名变量,是不是会运行父类的名字,是不是这样的;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2