A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 石三伢子1 中级黑马   /  2015-11-7 10:50  /  837 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

线程有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();
}

4 个回复

倒序浏览
xian构造方法中  super(name) 试一下
回复 使用道具 举报
马尼玛 发表于 2015-11-7 13:28
xian构造方法中  super(name) 试一下

super(name);加到构造函数的首行,自定义线程的名字就改过来了;具体原因在哪里?
回复 使用道具 举报
石三伢子1 发表于 2015-11-28 12:00
super(name);加到构造函数的首行,自定义线程的名字就改过来了;具体原因在哪里? ...

super(name)是调用了父类的带String参数的构造器,父类的该构造器里面有逻辑能实现把String这个参数作为线程的名字。
回复 使用道具 举报 0 1
Camwly 发表于 2015-11-28 12:08
super(name)是调用了父类的带String参数的构造器,父类的该构造器里面有逻辑能实现把String这个参数作 ...

是不是还是多态的特性啊,如果用this.name=neme;代替super(name);是不是初始化子类的name,如果子父类同名变量,是不是会运行父类的名字,是不是这样的;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马