如何让一个类等待另一个类的java

时间:2014-03-13 19:39:32

标签: java wait

我正在制作的游戏遇到一些问题。我正在尝试实现一个转向结构,但是我似乎无法让一个类等到另一个类完成。

主Game类需要等到用户按下GameView类中的按钮才能继续计算发生的事情然后再次调用turn方法。

我尝试过使用wait()和notify()方法但是GameView GUI没有加载,或者它不会通知Game类继续。有人可以帮忙吗?感谢

if (player1.isPlayerFinsihed() == false && player1.getPlayersTurn() == true) {
            //Check for if the game has just been started
            if (player1.getDifficulty() == 0) {
                player1.setDifficulty(currentDifficulty);
                turn();
            }
            else {
                int number = questionArray1.getNumber(player1.getDifficulty());
                int playerCategory = player1.getCategory();
                int playerQuestionNumber = player1.getQuestionNumber();
                Question newQuestion = questionArray1.getQuestion(number,playerCategory);
                Answer newAnswer = questionArray1.getAnswer(number,playerCategory);
                GameView newGameView = new GameView(number, playerQuestionNumber, 1, newQuestion, newAnswer);

                //INSERT WAIT METHOD HERE

                if (newGameView.getCorrect() == true) {
                    //add score based on question position
                    System.out.println("Correct");
                }
                //False
                else {
                    //finish game for player
                    player1.setGameOver(true);
                }
                //display and wait
                //while (//main screen is not returning that the player is done) {
                //  do nothing
                //}
                turn();
            }
    }

2 个答案:

答案 0 :(得分:0)

使用Thread#join()方法。

请参阅此处的教程:

http://www.tutorialspoint.com/java/lang/thread_join.htm

答案 1 :(得分:0)

正如Sotirios Delimanolis在评论中指出的那样,一个班级不会等待,也不会跑。类是一段代码和数据,因此没有 execution 的概念。执行代码的是线程。线程是独立的,并行运行代码 (同时)。因此,它们具有允许它们之间同步的若干机制。因此,如果您希望同时执行2个类,则需要为每个类生成一个线程。然后你只需处理其中一个线程,等待另一个线程使用Thread#join()完成。

您可以查看official tutorials以了解有关Java的并发性的更多信息。