【发布时间】:2012-07-31 03:48:04
【问题描述】:
我正在尝试测试 8 种不同的游戏算法。这些算法可以与遵循游戏界面的不同类型的游戏相互对抗。
所以,他们必须互相对抗 100 场比赛。我已经完成了那部分,它工作正常。现在,我正在尝试使其成为多线程,以利用朋友计算机的 8 核。
我很少有使用线程的经验。那么,为了使我的代码成为多线程,我必须进行哪些更改?
这是我的单线程版本的代码。
编辑:我想到的解决方案(以我的基本知识)是关于制作一个 Match 类,它需要两个玩家和他们想要玩的游戏。该类将实现 Runnable,我可以为每个游戏创建一个线程。我现在的问题是,一旦 run() 方法完成,我将如何通知结果?
谢谢
for (int p1 = 0; p1 < allPlayers.length; p1++)
{
for (int p2 = p1 + 1; p2 < allPlayers.length; p2++)
{
for (int t = 0; t < trials; t++)
{
int player1 = t % 2 == 0 ? p1 : p2;
int player2 = t % 2 == 0 ? p2 : p1;
Player[] players = new Player[] { allPlayers[player1], allPlayers[player2] };
game.newGame();
while (!game.isFinished())
game.playNthMove(players[game.currentPlayer()].move(game));
data[p1][p2][t] = getCharValue(game.getOutcome()[t % 2 == 0 ? 0 : 1]);
data[p2][p1][t] = getCharValue(game.getOutcome()[t % 2 == 0 ? 1 : 0]);
}
}
}
【问题讨论】:
标签: java multithreading