加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

限制线程数和Java并发

发布时间:2020-12-15 05:00:02 所属栏目:Java 来源:网络整理
导读:我找不到使用最新JAVA并发例程的这种特定情况的示例. 我计划使用线程处理来自开放队列的项目,该队列可能包含0到数千个请求.我想限制所以在任何给定时间,不少于0并且不超过10个线程处理队列项. 是否有针对此特定类型案例的Java并发流程? 解决方法 我认为线程
我找不到使用最新JAVA并发例程的这种特定情况的示例.

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

是否有针对此特定类型案例的Java并发流程?

解决方法

我认为线程池是您正在寻找的.看看ExecutorService和Executors.

ExecutorService: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

获取一个处理最大值的新线程固定线程池. 10个线程:

ExecutorService threadPool = Executors.newFixedThreadPool(10);

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

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

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

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

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

我希望这可以帮助您解决问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读