【发布时间】:2015-12-08 17:52:45
【问题描述】:
这是我的 run() 函数:
@Override
public void run() {
while (true) {
long elapsed = TimeUtils.nanoTime() - startTime;
Texture currentFrame = connectedAnim.getFrame(elapsed);
textureToApplyTo = currentFrame;
}
}
在这个类的构造函数中,我在主线程中将textureToApplyTo 设置为一个Texture 变量。问题是,当我在 run() 函数中将 textureToApplyTo 设置为 currentFrame 时,它只会在我设置它的类中更改它。我认为问题是我在这个变量中创建了变量 textureToApplyTo类,以及主类,但我不知道我该怎么做......我需要一种方法来从这个线程更改主类中的textureToApplyTo 变量。
【问题讨论】:
-
你能提供更多代码吗?可以使用回调吗?
-
我认为您的问题可能出在其他地方。除非您在线程中创建一个单独的 textureToApplyTo 实例,看起来您并没有这样做,否则您的线程正在访问同一个实例。在线程之间共享变量非常容易,这就是为什么您必须为共享变量使用互斥锁。如果您发布更多代码可能会有所帮助。
标签: java multithreading variables libgdx