我需要一次执行4个任务,如下所示:
ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
while(...) {
taskExecutor.execute(new MyTask());
}
//...wait for completion somehow
Run Code Online (Sandbox Code Playgroud)
一旦完成所有内容,我该如何收到通知?现在我想不出比设置一些全局任务计数器更好的事情,并在每个任务结束时减少它,然后在无限循环中监视这个计数器变为0; 或获得一个Futures列表,并在无限循环监视器isDone中为所有这些.什么是更好的解决方案不涉及无限循环?
谢谢.
java parallel-processing concurrency multithreading executorservice
如何限制同时执行的线程数?这是我的算法示例:
for(i = 0; i < 100000; i++) {
Thread.start {
// Do some work
}
}
Run Code Online (Sandbox Code Playgroud)
我想确保一旦我的应用程序中的线程数达到100,算法将暂停/等待,直到应用程序中的线程数低于100.
目前"一些工作"需要一些时间来做,我最终在我的应用程序中有几千个线程.最终它耗尽线程和"一些工作"崩溃.我想通过限制它可以一次使用的池数来解决它.
请让我知道如何解决我的问题.