Итак, в настоящее время я создаю программу анализа данных и прогнозирования, и для целей тестирования я имитирую большое количество данных (в диапазоне от 10 000 до 1 000 000) «испытаний». Данные представляют собой смоделированный Матч для теоретической игры. Каждый матч имеет раунды. Основная psudocode для программы заключается в следующем:Многопоточность Java для имитации данных
main(){
data = create(100000);
saveToFile(data);
}
Data create(){
Data returnData = new Data(playTestMatch());
}
Match playTestMatch(){
List<Round> rounds = new List<Round>();
while(!GameFinished){
rounds.add(playTestRound());
}
Match returnMatch = new Match(rounds);
}
Round playTestRound(){
//Do round stuff
}
Прямо сейчас, я задаюсь вопросом, могу ли я справиться моделирование этих раундов в течение нескольких потоков, чтобы ускорить этот процесс. Я НЕ знаком с теорией многопоточности, так что кто-то может помочь мне в этом, или объясните мне, почему это не будет работать (не ускорит процесс). Благодаря!
Ваш код [потокобезопасной] (http://www.javaworld.com/article/2076747/core-java/design-for-thread-safety.html)? –
см. Java.util.concurrent Исполнители и ExecutorService – ControlAltDel
Используйте [Закон Амдаля] (https://en.wikipedia.org/wiki/Amdahl%27s_law), чтобы определить, насколько распараллеливает ваш код, чтобы ускорить его. –