Java 在不同类中创建对象的线程

Java 在不同类中创建对象的线程,java,multithreading,Java,Multithreading,我正在这里学习线程。我有一个演示类,它打印第n个斐波那契数。不,我正在尝试在另一个类threadtest1中为这个演示对象创建一个线程并执行它。但我一直得到以下错误 Starting thread :Thread[Fibonacci thread,5,main] Exception in thread "main" java.lang.NullPointerException at threadtest1.startThread(threadtest1.java:21) at t

我正在这里学习线程。我有一个演示类,它打印第n个斐波那契数。不,我正在尝试在另一个类threadtest1中为这个演示对象创建一个线程并执行它。但我一直得到以下错误

Starting thread :Thread[Fibonacci thread,5,main]
Exception in thread "main" java.lang.NullPointerException
    at threadtest1.startThread(threadtest1.java:21)
    at threadtest1.main(threadtest1.java:27)
有人能帮忙吗? 演示 改变

因为您应该初始化字段,而不是创建局部变量

这样做将防止

d.startDemo(t);

d
由于未初始化

这是一个字段阴影问题。啊,它正在工作,这是一个愚蠢的错误。不知道我怎么会错过它。非常感谢。
class threadtest1
{
private Thread t;
private demo d;
private int l;
public threadtest1(int l)
{
    this.l = l;
    demo d = new demo(l);
}
public threadtest1(int l1, int l2)
{
    this.l = (int)Math.max(l1,l2);
    demo d = new demo(l);
}

public void startThread()
{
    t = new Thread(d,"Fibonacci thread");
    System.out.println("Starting thread :" +t);
    d.startDemo(t);
}

public static void main(String args[])
{
    threadtest1 t1 = new threadtest1(5);
    t1.startThread();
}
}
demo d = new demo(l);
d = new demo(l);
d.startDemo(t);