线程之间的Java UI通信

时间:2015-03-18 23:25:50

标签: java multithreading user-interface runnable

我正在尝试使用UI线程创建一个游戏,以便它可以在不等待游戏逻辑完成的情况下进行更新。目前我正在使用Runnable类游戏这样做(剥离代码):

public class Game implements Runnable {
    GameView gameView;

    public static void main(String[] args) {
        Game game = new Game();
        game.start();
    }

    public void start() {
        Thread t = new Thread(this, "UIThread");
        t.start();
    }

    public void run() {
        //Adding views here
        gameView = new GameView();
        gameView.setActionListener(this);
    }

    public doAction() {
        gameView.updateSomething();
    }

    public void actionPerformed(ActionEvent e) {
        doAction();
    }
}

run()方法和GameView构造在新线程中按预期发生,并且actionPerformed()发生在我想要的主线程上(虽然我不知道为什么会这样)。我遇到的问题是,当我尝试在doAction()中调用gameView上的方法时,gameView方法在主线程上运行。如何告诉gameView对象在新线程上执行某些操作呢?

0 个答案:

没有答案