gpt4 book ai didi

java - 限制线程数和 Java 并发性

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:34:22 26 4
gpt4 key购买 nike

我找不到使用最新的 JAVA 并发例程的这种特定情况的示例。

我计划使用threads 来处理来自开放队列的项目,该队列可能包含 0 到数千个请求。我想限制在任何给定时间有不少于 0 且不超过 10 个线程处理队列项。

是否有针对这种特定类型案例的 Java 并发进程?

最佳答案

我认为线程池正是您要寻找的。查看 ExecutorService 和 Executors。

执行器服务:http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html

执行者:http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Executors.html

获取一个新的 Thread 固定线程池,最多处理。一次 10 个线程:

ExecutorService threadPool = Executors.newFixedThreadPool(10);

使用提交方法,您将 Callables 或 Runnables 传递给池。

对于您的用例,您需要一个查看队列的进程,如果有新请求,则必须创建 Callable 或 Runnable 并将其传递给线程池。游泳池确保最大。一次执行 10 个线程。

这是一个非常小的教程:http://www.math.uni-hamburg.de/doc/java/tutorial/essential/threads/group.html

使用线程池的一个好处是提交方法返回一个 Future 对象,它支持已执行线程的返回类型。

future :http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html

希望本文能帮助您解决问题。

关于java - 限制线程数和 Java 并发性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14653173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com