调用接口,多线程问题--恳求各位大侠解答

dreamcs 2006-03-21 11:05:00
import java.io.*;
interface car
{
void prints();
}
class TestInterface implements car
{
public void prints()
{
System.out.println("falali");
}
public static void main(String[] args)
{
TestInterface test=new TestInterface();

}
}
public class InvokeInterface
{

public void carname(car ming)
{
ming.prints();
}
public static void main(String[] args)
{
InvokeInterface invokeinterface=new InvokeInterface();
exthread xian=new exthread();
xian.start();
TestInterface face=xian.getinstance();


invokeinterface.carname(face);

}
}
class exthread extends Thread
{TestInterface testinterface=null;
public void run()
{
testinterface=new TestInterface();
System.out.print("thread is running");
System.out.println(testinterface);
}
public TestInterface getinstance()
{

System.out.print("testinterface instance");
System.out.println(testinterface);
return testinterface;

}
}

运行结果

testinterface instancenull
Exception in thread "main" java.lang.NullPointerException
at InvokeInterface.carname(InvokeInterface.java:24)
at InvokeInterface.main(InvokeInterface.java:34)
thread is runningTestInterface@765291

为什么会有这个异常啊,真不是理解,
invokeinterface.carname(face);这句怎么没有效果,应该打印出falali

我的思路是这样的,定义实现接口,在另一个类中调用接口
让实现接口的类在我定义的那个线程运行,在调用接口类中调用接口,为什么不行啊

恳求各位大侠解答
谢谢
...全文
194 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
interpb 2006-03-22
  • 打赏
  • 举报
回复
xian.start();

Thread.currentThread().sleep(1); //让主线程休眠

TestInterface face = xian.getinstance();

就可以了
yuzl32 2006-03-22
  • 打赏
  • 举报
回复
... ...
InvokeInterface invokeinterface=new InvokeInterface();
exthread xian=new exthread();

xian.setPriority(6);

xian.start();
... ...
dreamcs 2006-03-22
  • 打赏
  • 举报
回复
明白了,谢谢interpb(曾曾胡) ( :yuzl32(Hello!有酒醉)
dreamcs 2006-03-21
  • 打赏
  • 举报
回复
有可能,我试试
interpb 2006-03-21
  • 打赏
  • 举报
回复
public void run()
{
testinterface=new TestInterface();
System.out.print("thread is running");
System.out.println(testinterface);
}

testinterface=new TestInterface()是在线程里面赋值 ,赋值前是null

TestInterface face=xian.getinstance();可能在线程启动之前,所以取回null


62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧