黑马程序员技术交流社区
标题:
关于线程名称的一点疑问
[打印本页]
作者:
杨翔
时间:
2013-1-14 21:50
标题:
关于线程名称的一点疑问
本帖最后由 杨翔 于 2013-1-15 22:34 编辑
在看线程课程视频的初期看到的,感觉很奇怪,我用this.name = name; 已经把名称赋给对象了啊,但是当我用 对象.getName 想在打印的时候显示我自定义的名称是不成功的,而是用super调用父类的setName方法就是可以成功的?我想不通的是 对象.getName不是调用的是对象的名称属性么,为什么非得用setName设置了名称,才能打印出自定义的名称呢
class Demo extends Thread
{
private String name;
Demo(String name)
{
this.name = name; //此处将自定义的名称赋给调用此方法的对象
//super(name); 用此方法就可以在打印时显示自定义的名称
}
public void run()
{
for(int i=0; i<60; i++)
{
System.out.println(this.getName() + "demo run------" + i);
}
}
}
class ThreadDemo
{
public static void main(String[] args)
{
Demo d = new Demo("haha"); //将name传入构造函数
d.start();
Demo h = new Demo("hiahia");
h.start();
for(int x=0; x<60; x++)
{
System.out.println("hello world------" + x);
}
}
}
复制代码
作者:
王溢君
时间:
2013-1-14 22:12
本帖最后由 luck28 于 2013-1-14 22:35 编辑
private String name;
name只是Demo的一个成员属性,不是它的线程名字。
这句话改成这样this.name,就可以获取你要的结果。
System.out.println(this.name + "demo run------" + i);
作者:
柴乔军
时间:
2013-1-15 00:53
Thread
public Thread(String name)
分配新的 Thread 对象。这种构造方法与 Thread(null, null, name) 具有相同的作用。
参数:
name - 新线程的名称。
楼主你的this.name = name ;只是给你自己定义的类中的局部变量private String name;赋了值,并没有给线程赋值name,而在构造方法中super(...)
调用了父类Thread的构造方法,如上,传递的参数是该线程的名称,所以super(..)可以给线程设置名称,自然也可以用getName()方法取得
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2