[英]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.