我有一个带有渲染线程的小应用程序。这个线程所做的就是在当前位置绘制我的对象。
我有一些代码:
public void render()
{
// ... rendering various objects
if (mouseBall != null) mouseBall.draw()
}
然后我还有一些鼠标处理程序,当用户单击鼠标时,它会创建 mouseBall 并将其设置为一个新球。然后用户可以四处拖动鼠标,球将跟随鼠标所到之处。当用户释放球时,我有另一个设置 mouseBall = null 的鼠标事件。
问题是,我的渲染循环运行得足够快,以至于条件 (mouseBall != null) 会在随机时间返回 true,但在那一刻之后,用户会松开鼠标,我会尝试对空对象执行 .draw() 时得到空指针异常。
这样的问题有什么解决方案?
最佳答案
问题在于您正在访问 mouseBall
两次,一次是检查它是否不是 null
,另一次是调用它的函数。您可以使用这样的临时文件来避免此问题:
public void render()
{
// ... rendering various objects
tmpBall = mouseBall;
if (tmpBall != null) tmpBall.draw();
}
关于java - 多线程 : Objects being set to null while using them,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/365743/