Если вам просто интересно поиграть с рутиной сортировки в многопоточном окружении, то Торстен хорошо это изложит. Я бы порекомендовал вам использовать рекурсивный алгоритм, поскольку он уже разбит на вызов метода, который можно передать в пул потоков. Просто помните, что существует ограничение на пул потоков, и вы можете повесить свое приложение, если вы заполняете пул потоками, которые блокируют ожидание доступности другого потока.
Если ваша цель состоит в том, чтобы эффективно сортировать и объединять несколько ядер, то вы получите максимальную производительность от алгоритмов параллельной сортировки. Быстрая сортировка и сортировка слиянием являются последовательными и могут фактически работать медленнее при многопоточности из-за накладных расходов на многопоточность, даже с пулом потоков. Также обратите внимание, что нерекурсивный алгоритм сортировки работает быстрее, чем его рекурсивный эквивалент из-за дополнительной активности стека со всеми этими вызовами методов. А рекурсивные (потоковые или нет) сортировки на очень больших наборах данных могут привести к сбою при заполнении стека.
Возможно, вы могли бы попросить сообщество предоставить примеры идей приложений для изучения потоков. Мое предложение было бы сканером веб-сайта. Из этого можно извлечь массу полезного!