Мне нужно написать код для параллельной сортировки слиянием, и моя проблема в том, что если реализация сортировки слиянием хочет создать новый поток, она должна проверить, доступен ли слот потока или нет (поэтому я создал Threapool (максимум 5 потоков) Он тоже работает, но моя проблема в том, что я должен использовать только 5 потоков без их повторного использования.
Это означает, что если больше нет доступных слотов потоков, поток просто выполняет для своей части массива традиционный алгоритм рекурсивной сортировки слиянием.
int nThreads = 5;
ExecutorService executor = Executors.newFixedThreadPool(nThreads);
for (int i = 1; i < 10; i++){
Runnable worker = new Mergesort(array);
executor.execute(worker);
}
executor.shutdown();
while(!executor.isTerminated()) {
}