最大。使用Threadpool Java创建了Threads

时间:2015-10-24 15:12:34

标签: java multithreading concurrency mergesort

我必须为并发Mergesort编写代码,我的问题是,如果合并排序实现想要创建一个新线程,它必须检查是否有可用的线程槽(所以我创建了一个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()) {

    }   

1 个答案:

答案 0 :(得分:0)

如{h 3}所述,有一些方法可以做到这一点。特别是用户 danben 的答案。

但是,您需要确保自己所说的5的计数包括主线程的数量 - 也就是5的数量是指平均主线程+4线程 5工作者线程。

希望这能指明你解决问题的方向。