繁体   English   中英

最高 用Threadpool Java创建线程

[英]Max. created Threads with Threadpool Java

我必须为并发的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()) {

    }   

如本SO回答中所述,有一些方法可以做到这一点。 特别是请参考dandan用户的答案。

但是,您需要确保自己声明的5个计数也包括或不包括主线程-即5个计数是否表示主线程+ 4个线程 5个工作线程。

希望这为您指出解决问题的方向。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM