我只有这样的“简单”同步锁块:
private final Object screenLock = new Object();
public void Update(double deltaTime)
{
synchronized (screenLock)
{
screenManager.Update(deltaTime);
}
}
public void Draw()
{
synchronized (screenLock)
{
screenManager.Draw();
}
}
deltaTime
不是null
,screenManager
不是null
,所以我有点迷路了。我知道我不应该在如此高的级别上加锁,但是无论我将积木放置在哪里,问题仍然存在。我有两个线程都使用
Update
运行到Draw
和screenLock
。什么会导致锁上的
NullPointerException
?痕迹:
最佳答案
感谢@Adam Batkin和@MadProgrammer-我在NullPointerException
的某些部分中找到了自己的特定screenManager
我做了一些研究,有时在同步块(synchronized block)的开头会抛出NullPointerException
,但实际上它会在该块内抛出。
其他原因:
screenLock
为空