我正在尝试使用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对象在新线程上执行某些操作呢?