黑马程序员技术交流社区
标题:
获取线程对象名称
[打印本页]
作者:
邵阳
时间:
2012-7-9 18:36
标题:
获取线程对象名称
第一个代码:
class Demo extends Thread
{
public Demo(String name)
{
super(name);
}
public void run()
{
for (int i=0;i<60 ;i++ )
{
System.out.println(this.getName()+"。。。。Hello World!......"+i);
}
}
}
class Test
{
public static void main(String[]args)
{
Demo d1=new Demo("邵阳");
Demo d2=new Demo("郭圆");
d1.start();
d2.start();
for (int i=0;i<60 ;i++)
{
System.out.println("主函数hello....."+i);
}
}
}第二段代码:
class Demo extends Thread
{
private String name;
public Demo(String name)
{
this.name=name;
}
public void run()
{
for (int i=0;i<60 ;i++ )
{
System.out.println(name+"。。。。Hello World!......"+i);
}
}
}
class Test
{
public static void main(String[]args)
{
Demo d1=new Demo("邵阳");
Demo d2=new Demo("郭圆");
d1.start();
d2.start();
for (int i=0;i<60 ;i++)
{
System.out.println("主函数hello....."+i);
}
}
}
我疑惑的是两段代码都可以打印出名称,没什么区别啊。
第一段代码打印出的名称是线程名称,那第二段代码打印出的名称难道不是线程名称。
作者:
王红潮
时间:
2012-7-9 19:07
第一段
class Demo extends Thread
{
public Demo(String name)
{
super(name);
}
其中的super(name) 是调用的父类Thread中的构造函数Thread(String name);
而第二段
class Demo extends Thread
{
private String name;
public Demo(String name)
{
this.name=name;
}
中的this.name是本类中的,虽然结果都一样,但代码代表的意思不一样。
作者:
邵阳
时间:
2012-7-9 20:05
王红潮 发表于 2012-7-9 19:07
第一段
class Demo extends Thread
{
哥们我问的问题是
第一段代码打印出的名称是线程名称,那第二段代码打印出的名称难道不是线程名称?
作者:
尹善波
时间:
2012-7-9 20:41
第二个只是一个简单的函数调用
作者:
李东升
时间:
2012-7-9 21:54
第一个是线程名称,super调用父类构造方法,this.getname()获取线程名称,获取是对的。
第二个是你传的参数,而且调用的也是参数名,只是你刚好打印的name属性跟Demo d1=new Demo("邵阳");Demo d2=new Demo("郭圆");这传递进去的一样,所以名字也一样。你把第二段代码的构造函数去掉,结果是什么样子?没有getname()方法,打印不出来的。所以第二个打印的,不是线程名称。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2