gpt4 book ai didi

Java多线程空指针异常

转载 作者:行者123 更新时间:2023-11-30 07:01:26 24 4
gpt4 key购买 nike

我正在处理这个程序,但我一直收到 NullPointerException,我不确定为什么。

//Constructor

public LongTask(SharedResults sharedData,int start, int end)
{
super("Thread");
sharedData=this.sharedData;
start = this.start;
end=this.end;

}

//Run

public void run() {
int sum = 0;
for (int num = start; num<=end;num++)
{
sum+=num;

try {
Thread.sleep((long)(5000*Math.random()));
}

catch (InterruptedException e)
{}
sharedData.addToResult(sum);
}
}
}

我最终得到一个 NullPointerException 错误。看起来我的数据没有被正确汇总。

最佳答案

你的问题是:

sharedData=this.sharedData;
start = this.start;
end=this.end;

您被分配了方法级变量以具有类级变量的值。这需要反过来。按照现在的编写方式,您的 SharedData 将始终为 null,因为它永远不会在构造函数中分配。所以稍后,当你打电话时

 sharedData.addToResult(sum);

您正在尝试在空对象引用上调用此方法,这解释了您的 NullPointerException

关于Java多线程空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29867023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com