Максимум. создал потоки с Threadpool Java

Мне нужно написать код для параллельной сортировки слиянием, и моя проблема в том, что если реализация сортировки слиянием хочет создать новый поток, она должна проверить, доступен ли слот потока или нет (поэтому я создал 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()) {

    }   

person Merve    schedule 24.10.2015    source источник


Ответы (1)


Есть несколько способов сделать это, как указано в этом ТАК ответь. Особенно обратитесь к ответу пользователя danben.

Однако вам нужно убедиться, что счетчик 5, который вы указываете, включает или нет основной поток - то есть счетчик 5 означает основной поток + 4 потока или 5 рабочих потоков.

Надеюсь, это укажет вам путь к решению вашей проблемы.

person Prahalad Deshpande    schedule 24.10.2015
comment
Большое спасибо!! Я думаю, что CallerRunsPolicy () - это то, что я ищу :) - person Merve; 24.10.2015