黑马程序员技术交流社区
标题:
关于线程名称的疑问
[打印本页]
作者:
周兴华
时间:
2012-8-24 19:26
标题:
关于线程名称的疑问
本帖最后由 周兴华 于 2012-8-24 19:28 编辑
代码如下:
public class ThreadDemo {
public static void main(String[] args){
Test1 t=new Test1("mythread");
t.start();
}
}
class Test1 extends Thread{
public void run(){
for(int i=0;i<50;i++){
System.out.println(this.getName()+" run"+i+"次");
}
}
}
在API中Thread类的构造方法中有这么一条:
public Thread(String name)分配新的 Thread 对象。这种构造方法与 Thread(null, null, name) 具有相同的作用。 参数
:
name - 新线程的名称。
问题是如果代码中的 Test1 t=new Test1("mythread");改为 Test1 t=new Test1();就能通过编译,而按照API中的构造方法Thread(String name)去创建Thread对象就不能通过编译,
这是为什么呢?
作者:
刘芮铭
时间:
2012-8-24 20:17
public class ThreadDemo1 {
public static void main(String[] args){
Test1 t=new Test1("mythread");
//你的源程序根本没有Test(String str);这个构造函数,所以每次调用失败!
t.start();
}
}
class Test1 extends Thread{
Test1(String name)
//创建一个String参数的构造方法,用super(name)调用父类的构造方法就可以了
{
super(name);
}
public void run(){
for(int i=0;i<50;i++){
System.out.println(this.getName()+" run"+i+"次");
}
}
}
作者:
芦曦
时间:
2012-8-25 01:24
你要往Test1里传值,必须的有构造函数。但是你的程序里没有,加上就行了。
作者:
王金科
时间:
2012-8-25 02:12
你没有带参数的Test1构造函数,默认构造函数是不带参数,你当让不能往Test1里面传值
Test1 t=new Test1("mythread");这句肯定是编译不通过的.
而关于Thread(String name)这个.是这么用的
class A implementsRunnable
{
public void run()
{
}
}
在主函数里面开启新的线程
new Thread(new A()).start();
作者:
杨卓儒
时间:
2012-8-25 03:34
必须有public Thread(String name); 这个构造函数才可以使用setName来设置线程名。
然后再构造函数里用super(name)就可以了。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2