使用Threadpool Java创建的最大线程数
我必须为并发Mergesort编写代码,我的问题是,如果merge sort实现想要创建一个新线程,它必须检查是否有可用的线程槽(因此我创建了一个线程池(最多5个线程)。它也可以工作,但我的问题是,我应该只使用5个线程,而不重用它们 这意味着如果没有更多的线程槽可用,线程只对其数组部分执行传统的递归合并排序算法使用Threadpool Java创建的最大线程数,java,multithreading,concurrency,mergesort,Java,Multithreading,Concurrency,Mergesort,我必须为并发Mergesort编写代码,我的问题是,如果merge sort实现想要创建一个新线程,它必须检查是否有可用的线程槽(因此我创建了一个线程池(最多5个线程)。它也可以工作,但我的问题是,我应该只使用5个线程,而不重用它们 这意味着如果没有更多的线程槽可用,线程只对其数组部分执行传统的递归合并排序算法 int nThreads = 5; ExecutorService executor = Executors.newFixedThreadPool(nThreads);
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()) {
}
int=5;
ExecutorService executor=Executors.newFixedThreadPool(n线程);
对于(int i=1;i<10;i++){
Runnable worker=新的合并排序(数组);
执行人,执行人(工人);
}
executor.shutdown();
而(!executor.isTerminated()){
}
如本文所述,有一些方法可以做到这一点。特别是请参考用户的回答danben
但是,您需要确保您声明的5个计数也包括主线程或不包括主线程,也就是说,5个计数意味着主线程+4个线程或5个工作线程
希望这能为您指明解决问题的方向。非常感谢!!我想CallerRunPolicy()就是我要找的东西:)