マルチスレッドに問題があります。wait() と notify() または join() を使用しようとすると、InterruptedException が発生します。WHILE ループに 2 つのスレッドがあり、両方が終了するまで待ちたいと思います。これは私のコードです:
while (!GamePanel.turn)
{
if(GamePanel.s.isRunning)
{
synchronized (GamePanel.s.thread)
{
try {
GamePanel.s.thread.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//Player selected random moves
if(GamePanel.selectedMove == 1)
{
//Get computer's Random move.
strategy.getRandomMove();
}
else
{
//Player selected AI moves
if(GamePanel.selectedMove == 2)
{
//Get computer's AI move.
strategy.getMove();
System.out.println(strategy.move);
}
}
//Perform the next move of the computer.
Rules.makeMove(GamePanel.dimples, strategy.move, false);
}
strategy.getMove() と Rules.makeMove() はどちらもスレッドです。スレッドごとに、独自の start() および stop() メソッドを作成しました。
public void start()
//This function starts the thread.
{
if (!isRunning)
{
isRunning = true;
thread = new Thread(this);
thread.setPriority(Thread.NORM_PRIORITY);
thread.start();
}
}
private void stop()
//This function stops the thread.
{
isRunning = false;
if (thread != null)
{
thread.interrupt();
}
thread = null;
}
thread.stop() も実行しようとしましたが、それでも同じ問題です。 私の質問は、両方のスレッドが完了するまで WHILE ループを待機させるにはどうすればよいですか??