Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使一个类等待另一个类_Java_Wait - Fatal编程技术网

Java 如何使一个类等待另一个类

Java 如何使一个类等待另一个类,java,wait,Java,Wait,我正在创作的游戏有一些问题。我试图实现一个turn结构,但是我似乎不能让一个类等待另一个类完成 主游戏类需要等待用户按下GameView类中的按钮,然后再继续计算发生了什么,然后再次调用turn方法 我尝试过使用wait()和notify()方法,但是GameView GUI没有加载,或者它不会通知游戏类继续。有人能帮忙吗?谢谢 if (player1.isPlayerFinsihed() == false && player1.getPlayersTurn() == true)

我正在创作的游戏有一些问题。我试图实现一个turn结构,但是我似乎不能让一个类等待另一个类完成

主游戏类需要等待用户按下GameView类中的按钮,然后再继续计算发生了什么,然后再次调用turn方法

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

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();
            }
    }
使用Thread#join()方法

请参见此处的教程:


正如索蒂里奥斯·德里马诺利斯(Sotirios Delimanolis)在评论中指出的那样,一个班级不会等待,也不会奔跑。类是一段代码和数据,因此没有执行的概念。执行代码的是一个线程。线程是独立的,同时并行运行代码。因此,它们有几种机制来允许它们之间的同步。因此,如果希望同时执行两个类,则需要为每个类生成一个线程。然后您只需处理其中一个线程,等待另一个线程使用
Thread\join()
完成


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

请注意您的术语,类不会等待。因此,在实例化GameView时,我会让它在线程上运行?但如果我等待线程死亡,我将无法访问该线程所需的对象中的信息,否?请将衍生线程存储在某个位置,然后从主线程访问它。谢谢,如果我不知道该线程何时完成选择应答器,我该如何做加入后,您确定衍生线程已完成。我不知道如何创建线程。加入();方法工作。Java似乎只是跳过了这一行,而不是等待和jst继续执行其余的代码。有什么帮助吗?