我最近遇到了我的代码问题,我有 1 个线程正在执行和运行游戏,另一个线程检查可能在事件中调用的所有事件:
事件示例:
try {
if (currentMinigame != null) {
//Longer code and method execution time would usually be here,
//but for the sake of simplicity, I'll just use this
currentMinigame.onEntityShootBow(e);
}
} catch (Exception ex) {
exitEarly(ex);
}
问题是,在某些时候,执行小游戏的线程会将 currentMinigame 设置为 null。此时,将在行上调用一个空指针:currentMinigame.onEntityShootBow(e);
有同步所有这些事件的简单方法吗?(大约有 25 个)
我想过在
Object currentMinigameLock = new Object();
Synchronized(currentMinigameLock)
每一个事件中都使用它,但每次我使用同步;我几乎看不到任何变化,而且要重构大量的代码!会有更简单的方法吗?
多谢你们!-汤姆