我還是新來的java運行這段代碼現在連續運行1000次所以它的mutch可能更有效率來運行它多線程,但我不知道什麼是什麼最好的辦法是給分數回主線程java從連續運行1000次的程序運行到muli線程
private int StartGameRandom(EntityManager managerOrg, UserInput input)
{
EntityManager manager = managerOrg.cloneState(managerOrg);
int playerId = 0;
int score = 0;
//get the player id from the player that has to play
ArrayList<Entity> tempState = manager.getAllWithComponents(PhaseComponent.class);
if (tempState.isEmpty())
System.err.println("ScoreSystem.addScorePlayer noPlayerComponent found");
Entity state = tempState.get(0);
PhaseComponent sComponent = (PhaseComponent) state.getComponent(PhaseComponent.class);
playerId = sComponent.getPlayerId();
SetPlayersToRandom(manager);
new PhaseSystem(manager, input);
ArrayList<Entity> tempPlayer = manager.getAllWithComponents(PlayerComponent.class);
if (tempPlayer.isEmpty())
System.err.println("montecarlo.startgamerandom noPlayerComponent found");
Entity[] players = new Entity[tempPlayer.size()];
tempPlayer.toArray(players);
//set all the players to random ai
for (Entity entity : players) {
PlayerComponent component = (PlayerComponent) entity.getComponent(PlayerComponent.class);
if (component.getPlayerID() == (byte)playerId)
{
score = component.getTotalScore();
break;
}
}
return score;
}
這是我做的得分
for (int j = 0; j < RUNS; j++)
{
int score = StartGameRandom(manager,input);
maxScore = Math.max(score, maxScore);
if (j == 0)
{
minScore = score;
averageScore = score;
}
else
{
minScore = Math.min(score, minScore);
averageScore = ((averageScore*j)+score)/(j+1);
}
}
究竟什麼是Java中做到這一點的最好辦法
你是什麼意思,連續運行1000次?可以更好地解釋你的目標是什麼? – prmottajr
第一個問題應該是詢問您是否已經對您的代碼進行了分析並確定這實際上是一個瓶頸。計算機速度非常快,使用線程的開銷很容易超過任何好處。 – Deadron
如果你看2秒的代碼部分,你會看到行 (int j = 0; j