黑马程序员技术交流社区
标题:
[已解决]关于多线程的一个问题
[打印本页]
作者:
胡宝林
时间:
2012-6-4 09:36
标题:
[已解决]关于多线程的一个问题
本帖最后由 hy19985125 于 2012-6-4 10:56 编辑
public class C{
public final String a;
public final String b;
public C(String a, String b){
this.a = a;
this.b = b;
}
public void play(){
System.out.println("a="+a);
}
public void sleep(){
System.out.println("b="+b);
}
public void d(){
new Thread(){
public void run(){
while(true){
play();
sleep();
}
}
}.start();
}
public static void main(String[] args){
new C("a", "b").d();
}
}
编译报错,不知道错在哪里,程序本该开启一个死循环线程,不断的执行play();sleep();
但是编译报错,求解!!!!
作者:
丰亚彬
时间:
2012-6-4 10:17
本帖最后由 丰亚彬 于 2012-6-4 10:20 编辑
你的匿名内部类那里错了,你写的那个sleep方法应该是Thread类里面的,不是你要指定的,要显示指定一下访问方法所在位置,我把代码给你
public class C{
public final String a;
public final String b;
public C(String a, String b){
this.a = a;
this.b = b;
}
public void play(){
System.out.println("a="+a);
}
public void sleep(){
System.out.println("b="+b);
}
public void d(){
new Thread(){
public void run(){
while(true){
C.this.play();
C.this.sleep();
}
}
}.start();
}
public static void main(String[] args){
new C("a", "b").d();
}
}
复制代码
作者:
梁小波
时间:
2012-6-4 10:28
因为你的sleep方法是线程Thread的内部方法,而你却用了;
所以当你在sleep中加入一个数字时会报异常,这就说明了。java把sleep当成了Thread.sleep();
而不是你的sleep;因为在Thread。sleep();中没有空参数的方法;所以会报错;
你可以怎么写 C.this.sleep();就哦了。我试过了,没问题;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2