Nat*_*ins 5 java multithreading thread-safety
我只有一个"简单"同步锁定块:
private final Object screenLock = new Object();
public void Update(double deltaTime)
{
synchronized (screenLock)
{
screenManager.Update(deltaTime);
}
}
public void Draw()
{
synchronized (screenLock)
{
screenManager.Draw();
}
}
Run Code Online (Sandbox Code Playgroud)
deltaTime不是null,screenManager不是null,所以我有点失落.
我知道我不应该锁定这么高的级别,但是无论我把Block放在哪里,问题都会存在.我有运行两个线程Update,并Draw均与screenLock.
什么会导致NullPointerException锁定?
跟踪:
来自com.dnx.manavo.GameThread.run的com.dnx.manavo.ScreenManager.Update(ScreenManager.java:107)的com.dnx.manavo.ApplicationActivity.Update(ApplicationActivity.java:98)中的java.lang.NullPointerException( GameThread.java:43)
感谢@Adam Batkin 和@MadProgrammer - 我NullPointerException在某些部分找到了我的具体内容screenManager
我做了一些研究,有时NullPointerException会在同步块的开头抛出一个 will,但实际上它是在块内抛出的。
其他原因:
screenLock一片空白