【发布时间】:2011-09-27 00:26:40
【问题描述】:
好的,所以我正在制作一个 2D 游戏,所有地图都以 2D 数组表示。我有这个巨大的方法可以根据地图中已有的内容修改地图。所以在实现功能一段时间后,FPS 降低了,所以我决定尝试使用多线程来提高速度(好东西,不是吗?)。
我创建了 3 个线程来完成这项工作,一个用于绘制和处理事件,一个用于更新地图的基础部分,另一个用于更新另一组变量。问题是,它会绘制,但当我启动所有 3 个线程时它不会更新。当我从绘画线程调用方法时,它会更新。我通过添加“System.exit(0);”测试了第一个更新线程在运行时,它没有启动,否则它会启动。我还尝试直接在更新线程的运行方法中手动更改地图的瓦片,但它什么也没做。所以我得出结论,运行被执行,变量被修改。所以我想,也许画家使用的变量不是更新的变量。
所有变量都在一个单独的类中并且是静态的(对吗?)并且由一个对象访问,但后来我将其更改为“直接”访问(IDE 建议),代码为“nameOfTheClass.variableName”
差点忘了提,Events(在有paint()方法的类中)修改了Map,这部分确实有效。
我不知道该怎么做,有人有想法吗?
【问题讨论】:
标签: java multithreading