首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >并行流线程数获取

并行流线程数获取

作者头像
阿超
发布于 2022-08-17 20:13:54
发布于 2022-08-17 20:13:54
1K0
举报
文章被收录于专栏:快乐阿超快乐阿超

我那时喜欢的是黄昏、荒郊和忧伤,而如今则向往清晨、市区和宁静。——博尔赫斯

这里用一个Set去接收并行流产生的线程id,对于上方的reduce函数我之前一篇博客已经讲过了,今天就来论证一下,到底并行流的线程数是否和JVM虚拟机可用的处理器数一致:

代码如下:

代码语言:javascript
复制
List<Integer> list = Stream.generate(() -> 1).limit(100).collect(Collectors.toList());
System.out.println(list);
int sum = list.parallelStream().reduce(1, Integer::sum, (a, b) -> {
    System.out.println(Thread.currentThread().getId() + " " + Thread.currentThread().getName() + " parallelStream执行sum时上次结果:[" + a + "]本次值:[" + b + "]");
    return Integer.sum(a, b);
});
Set<Long> threadIdSet = list.parallelStream().mapMultiToLong((i, c) -> c.accept(Thread.currentThread().getId())).collect(() -> Collections.synchronizedSet(new HashSet<>()), Set::add, Set::addAll);
System.out.println("结果:" + sum);
System.out.println("线程数:" + threadIdSet.size());
System.out.println("Java 虚拟机可用的处理器数:" + Runtime.getRuntime().availableProcessors());

运行结果如下:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档