如何从另一个线程更改主线程中的变量?

时间:2015-12-08 17:52:45

标签: java multithreading variables libgdx

这是我的run()函数:

@Override
public void run() {
    while (true) {
        long elapsed = TimeUtils.nanoTime() - startTime;
        Texture currentFrame = connectedAnim.getFrame(elapsed);
        textureToApplyTo = currentFrame;
    }
}

在这个类的构造函数中,我已将textureToApplyTo设置为主线程中的Texture变量。问题是,当我将run()函数中的textureToApplyTo设置为currentFrame时,它只会在我设置它的类中更改它。我认为问题是我正在创建变量{ {1}}在这个类中,以及主类,但我不知道我怎么做...我需要一种方法来改变主类中的textureToApplyTo变量来自这个线程

2 个答案:

答案 0 :(得分:3)

在textureToApplyTo声明中添加volatile keywork。喜欢这个

 public static volatile Texture textureToApplyTo;

答案 1 :(得分:-1)

你应该把变量变成一个全局变量,所以当声明这个类时,你会有这样的东西:

public class yourClass
{
    private textureToApplyTo;

    public setTexture(Frame frame)
    {
        textureToApplyTo = frame;
    }
}

执行此操作后,您可以使用run()方法调用此方法。

@Override
public void run() {
    while (true) {
        long elapsed = TimeUtils.nanoTime() - startTime;
        Texture currentFrame = connectedAnim.getFrame(elapsed);
        yourClass.setTexture(currentFrame);
    }
}