多线程问题

时间:2013-10-17 09:20:11

标签: java multithreading libgdx

我在libgdx中有两个线程的aplicaton。在一个线程中,该方法生成数字(仅当我按下按钮时才有效,我使用Gdx.graphics.setContinuousRendering(false);来阻止它)

public int numbersShow(){
    List<String> d = generateNumbers.generate();
     a = d.get(0);
     b = d.get(1);
     c = d.get(2);
     e = d.get(3);
     f = d.get(4);
     pos1 = (Integer) p.get(0);
     pos2 = (Integer) p.get(1);
     pos3 = (Integer) p.get(2);

    if(pos1==0){
        number.draw(batch, e, 50, 350);
     position=0;
    }
    if(pos1==1){
        number.draw(batch, f, 50, 350);
        position=1;
    }
    if(pos1==2){
        number.draw(batch, c, 50, 350);
        position=2;
    }
         return position;
}

第二种方法一直运行(在runnable类中),我想取“位置”变量:

@Override
public void run() {
    Gdx.graphics.requestRendering();
    numbersGame = new NumbersGame().position;
    if(Gdx.input.isKeyPressed(Input.Keys.NUM_1)){
        Gdx.app.log("pressed", "1");
     p1 = numbersGame;
        Gdx.app.log("p1", ""+p1);

    }

p1 = 0(但numbersShow()方法生成不同的values 0,1 ,2…)始终如此。我不知道哪里弄错了。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

numbersGame = new NumbersGame().position;将在对象的创建期间获取位置值。如果您稍后致电numbersShow(),则不会追溯更改numbersGame的值。

这是值副本而非参考副本