黑马程序员技术交流社区

标题: 多线程问题 [打印本页]

作者: 莫运飞    时间: 2012-4-26 01:32
标题: 多线程问题
package ticket2;
class Thread {

public static void main(String[] args) {
  
  Ticket t=new Ticket();
  
   t.start();//为什么这里报错,说找不到t??????????
}

}
class Ticket extends Thread{


int x=100;
public void run() {//将run改成start程序又可以运行了。。。Thread不是要有run方法吗,怎么改成start也可以运行呢????
while(true){
   if(x>0){
   System.out.println( " --->  "+x--);
   
   
   
   }
  
}


}

}



作者: 郑光    时间: 2012-4-26 01:47
第二行class Thread{}类的名字给改了
改成start就相当于直接调用这个start方法,和线程没关系了,就是一个普通方法
作者: 林德燚    时间: 2012-4-26 01:53
这是你把Thread类给重新写了,你定义的main函数的类名怎么可以叫Thread??
这样你下面的类基础你自己写的Thread,而你Thread类有没有start方法,怎么可以调用;
把类名改了就行;

作者: 光sail    时间: 2012-4-26 08:12
java类名不能是关键字和java已有的类名,你第一个类把java类中的Thread类重写了 ,而重写的类名有没有start()方法,
作者: 彭威    时间: 2012-4-26 08:42
首先 class Ticket extends Thread 你是想继承的Thread类,

不是你自己定义的那个主函数,先把主函数名改了。

而下面的Ticket类 里面没有复写 start()函数;

所以会出现这样

//将run改成start程序又可以运行了
作者: 王敏NO.09    时间: 2012-4-26 08:47
把Thread类的名称修改一下,否则就是普通的子父类继承关系,出现了上面的start方法名必须和run方法名一致的情况
作者: 金超    时间: 2012-4-29 13:20
你自己定义的class Thread与JAVA API中的Thread类重名了,class Ticket 继承的是你自己定义的Thread而不是JAVA API中的Thread,所以调用t. t.start();时就会报错,解决的办法是把你自己定义的Thread这个类该下名字。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2