我正在实施一个alpha beta搜索,迭代加深学校项目的棋盘游戏。我唯一的问题是严格的时间限制 - 如果解决方案没有按时完成,则该解决方案无效。我找到了解决这个问题的多种解决方案,但它们似乎都不适用于我。现在我拥有的是:
public int act(int board[][], int[] moves, int timeLimit) {
long startTime = System.currentTimeMillis();
ActThread actThread = new ActThread(board, moves);
Thread worker = new Thread(actThread);
worker.start();
try {
Thread.sleep((long) (0.9 * timeLimit));
} catch (InterruptedException e) {
System.err.println(e);
}
actThread.terminate();
return actThread.getBestMove();
}
正如你所看到的,我在不同的线程中计算结果,在哪里使用迭代加深来计算。这是我最简单的解决方案,但我尝试过使用ExecutorService,特别是awaitTermination函数,我试图安排TimerTask来终止ActThread。