将变量发送到线程中

时间:2015-04-11 00:22:19

标签: java android multithreading

我想在一个线程中使用一个数组,但我不知道在哪里放置它以便新线程接受它并在run方法中使用它

到目前为止,我的代码是

    public void game (Button[] temp) {
        Thread check = new Thread(new startGame());
        check.start();
    }
    class startGame implements Runnable {
        startGame() {}
        public synchronized void run() {
            if (temp[0].getDrawingCacheBackgroundColor() == temp[1].getDrawingCacheBackgroundColor() )
            {
                temp[0].setVisibility(View.INVISIBLE);
                temp[1].setVisibility(View.INVISIBLE);
            } 
        }
    }

我非常确定我必须将temp放在startGame()内,但是在startGame类中我放置temp以便我可以在if语句中使用它吗?

2 个答案:

答案 0 :(得分:0)

尝试将其放在startGame类中,该类应命名为StartGame。在构造函数中传递它并将类变量设置为值。

 public void game (Button[] temp) {
        Thread check = new Thread(new startGame(temp));
        check.start();
    }
    class startGame implements Runnable {
        private Button[] temp
        startGame(Button[] temp) {
            this.temp=temp;
        }
        public synchronized void run() {
            if (temp[0].getDrawingCacheBackgroundColor() == temp[1].getDrawingCacheBackgroundColor() )
            {
                temp[0].setVisibility(View.INVISIBLE);
                temp[1].setVisibility(View.INVISIBLE);
            } 
        }
    }

答案 1 :(得分:0)

ug_是正确的。使它成为一个类变量,如果它被共享则设置一些锁,并像任何其他类变量一样访问它。

但正如Ashton Engberg在评论中明确指出的那样,你无法从UI线程之外修改UI元素。