我有一种情况需要运行一些10,000个线程。显然,一台机器不能并行运行多个线程。有什么办法可以让线程池在开始时运行一些特定数量的线程,只要一个线程完成,剩下的线程就可以开始处理了?一次执行程序池限制线程数
回答
Executors.newFixedThreadPool(nThreads)
是最有可能的你正在寻找。只有指定的线程数量一次可以运行多少个线程。是的,一台机器不能同时运行10,000个线程,但它可以同时运行它们。根据每个线程的资源密集程度,在使用 Executors.newCachedThreadPool()
时,可能会更高效,其中根据需要创建多个线程,并且已完成的线程将被重用。
对于此用例。你可以有一个带有阻塞队列的ThreadPollExecuter。 http://howtodoinjava.com/core-java/multi-threading/how-to-use-blockingqueue-and-threadpoolexecutor-in-java/本教程很好地解释了这一点。
听起来你想在一组线程上运行10,000个任务。一个相对简单的方法是创建一个List,然后将所有任务添加到列表中,并将它们包装到Runnable中。然后,创建一个在构造函数中使用列表的类,并弹出列表的Runnable,然后运行它。此活动必须以某种方式进行同步。当列表为空时,类将退出。使用这个类开始一些线程数。他们会烧掉名单然后停下来。您的主线程可以监视列表的长度。
该类已经存在。它被称为'java.util.concurrent.ThreadPoolExecutor'。 –
- 1. python程序的执行次数限制
- 2. 限制线程池线程的数量
- 3. 限制一次执行方法的线程数
- 4. 线程数与线程数限制和执行过程参数
- 5. 执行并行线程池
- 6. 如何创建多个线程池(即多个执行程序,每个线程池都有一个线程)
- 7. 限制scalatest并行执行线程号
- 8. java线程池exectur执行execute(runnable)方法一次
- 9. C++线程池中的线程执行顺序
- 10. 控制应用程序执行次数
- 11. 执行程序关闭后,为什么Runnable仍然在可执行的线程池执行程序中执行?
- 12. 线程池有多个限制
- 13. 线程池 - 为WaitAll 64句柄限制
- 14. 代码由于异常而在线程池中执行了无限次
- 15. 在Scala中替换线程执行程序池
- 16. 使用执行程序的线程池Framrwork
- 17. 执行程序创建的线程池是否释放内存?
- 18. 用联合执行程序服务替换石英线程池
- 19. java thead池执行程序如何处理中断线程
- 20. jboss 6.4 EAP线程池/执行程序JNDI查找
- 21. 在多线程C#程序中执行一次初始化
- 22. 的Java执行器服务线程池
- 23. 线程池执行延迟疑问
- 24. 如何限制Java程序执行N次
- 25. 带线程池执行程序的压力测试应用程序
- 26. 你可以选择线程池中的线程来执行(boost)
- 27. 在C#中的线程池类管理线程执行
- 28. Java,多个线程,每次只执行一个线程
- 29. 一种线程池
- 30. 限制子进程一次运行的进程数.Popen
你看过[ThreadPoolExecutor](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html)吗? – bradimus
那些不是线程,那些是_tasks_。线程池使用有限数量的线程来运行无限数量的任务。 –
标题说“执行者池”。你是说当你在网上搜索类似的主题时,你没有发现*任何文章展示了如何在Java中设置线程池?我觉得很难相信。这看起来更像**你没有做任何研究**。因为这个原因被低估了! – Andreas