Что вам нужно сделать, так это сравнить задачу с возможностью распараллеливания. Другими словами, задача должна быть в состоянии разбить на полностью отдельные подзадачи.
Например, у вас есть много циклов for в вашем тесте. Это отдельные проблемы, которые можно разбить на разные темы.
Для этого ваш код будет выглядеть примерно так:
Thread thread1 = new Thread(){public void run(){
// your for-loop
}};
Вы сделаете это для каждого цикла for, а затем вызовете thread1.start();
для каждого потока.
Затем вам нужно будет позвонить thread1.join()
на каждый Thread
, чтобы дождаться завершения этой работы.
Ваш новый многопоточный код будет следовать следующей схеме:
Create all threads;
Start all threads;
Wait for all threads to complete;
Report on time taken to complete all threads;
Этот тест должен работать быстрее в зависимости от количества доступных ядер.