黑马程序员技术交流社区
标题:
关于线程setName()的问题
[打印本页]
作者:
夕颜
时间:
2015-5-5 10:49
标题:
关于线程setName()的问题
老师讲课的时候说:设置线程名称的方法:构造函数或者setName(),我用setName()时提示:无法覆盖Thread中的setName(),被覆盖的方法为final。这个提示还不是说明不能用setName来设置线程的名称。如下是我的代码:
package ThreadTest;
class Thread1 extends Thread
{
/*Thread1(String name)
{
super(name);
}*/
void setName(String name)
{
this.name = name;
}
public void run()
{
for(int i=0;i<60;i++)
{
System.out.println(Thread.currentThread().getName()+" run-----------"+i);
}
}
}
/*class Thread2 extends Thread
{
public void run()
{
for(int i=0;i<60;i++)
{
System.out.println(this.getName()+"我是第2个线程-----------"+i);
}
}
}*/
class ThreadTest
{
public static void main(String[] args)
{
Thread1 t1 = new Thread1();//创建一个对象,即创建一个线程
Thread1 t2 = new Thread1();
t1.setName("one");
t2.setName("two");
t1.start();//开启并执行该线程的方法。如果为t1.run(),那只是简单的对象调用,线程创建了但是没有运行,该方法仍然在main方法中(主线程)
t2.start();
for(int i=0;i<60;i++)
{
System.out.println("main run-----------"+i);
}
}
}
编译提示:
C:\Users\cecy\Desktop\javastudy\javacode\day11>javac -d . ThreadTest.java
ThreadTest.java:22: 错误: Thread1中的setName(String)无法覆盖Thread中的setName(St
ring)
void setName(String name)
^
被覆盖的方法为final
ThreadTest.java:24: 错误: name可以在Thread中访问private
this.name = name;
^
ThreadTest.java:24: 错误: 不兼容的类型: String无法转换为char[]
this.name = name;
^
3 个错误
作者:
殷俊
时间:
2015-5-5 12:43
要public呀,不然权限太小,当然覆盖不了{:3_54:}
作者:
夕颜
时间:
2015-5-5 13:06
殷俊 发表于 2015-5-5 12:43
要public呀,不然权限太小,当然覆盖不了
加了 还是提示被覆盖方法为final,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2