我只有一个“简单”的同步锁块:
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
,所以我有点失落。
我知道我不应该把锁放在这么高的级别上,但是无论我把 Block 放在哪里,问题都仍然存在。我有两个线程运行到Update
并且Draw
都使用screenLock
.
什么会导致NullPointerException
上锁?
痕迹:
java.lang.NullPointerException at com.dnx.manavo.ScreenManager.Update(ScreenManager.java:107) at com.dnx.manavo.ApplicationActivity.Update(ApplicationActivity.java:98) at com.dnx.manavo.GameThread.run(游戏线程.java:43)