我最近遇到了我的代码问题,我有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)
并通过每个事件,但每次我使用同步;我几乎从来没有看到过变化,这是重构的大量代码!会有更简单的方法吗?
谢谢大家! - 汤姆