帮助我们尝试调试问题的项目的朋友然后遇到了更令人费解的问题。我有一个线程通过getter方法获取某个变量的值,并每500ms打印一次identityHashCode。一切正常,直到在Game类中更改变量。然后返回的identityHashCode开始在新旧对象之间前后跳转。这是我以前从未见过的行为,希望你们有任何建议,甚至暗示发生了什么。
在此先感谢,我附上了部分源代码和控制台输出。
public GamePlayState(int sid) {
stateID = sid;
entityManager = StateBasedEntityManager.getInstance();
game = new Game(this);
//TEST CODE ONLY
Thread t = new Thread(this);
t.start();
}
/******TEST CODE ONLY******/
public synchronized void run () {
while (true) {
System.err.println(System.identityHashCode(game.getShootL()));
try {
wait(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
611581887
611581887个
611581887个
611581887个
611581887个
611581887个
现在值已更改
1709366259个
611581887个
1709366259个
611581887个
1709366259个
611581887个
1709366259个
答案 0 :(得分:0)
到目前为止我们无法找到真正的答案,但是使getter Method static返回的变量消除了问题。看起来底层的第三方引擎正在弄乱对象变量!?