1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. import java.util.UUID;
  5. import java.util.concurrent.ForkJoinPool;
  6. import java.util.concurrent.TimeUnit;
  7. public class Streams12 {
  8. public static void main(String[] args) {
  9. List<String> strings = Arrays.asList("a1", "a2", "b1", "c2", "c1");
  10. // test1();
  11. // test2(strings);
  12. test3(strings);
  13. // test4();
  14. }
  15. private static void test4() {
  16. List<String> values = new ArrayList<>(100);
  17. for (int i = 0; i < 100; i++) {
  18. UUID uuid = UUID.randomUUID();
  19. values.add(uuid.toString());
  20. }
  21. // sequential
  22. long t0 = System.nanoTime();
  23. long count = values
  24. .parallelStream()
  25. .sorted((s1, s2) -> {
  26. System.out.format("sort: %s <> %s [%s]\n", s1, s2, Thread.currentThread().getName());
  27. return s1.compareTo(s2);
  28. })
  29. .count();
  30. System.out.println(count);
  31. long t1 = System.nanoTime();
  32. long millis = TimeUnit.NANOSECONDS.toMillis(t1 - t0);
  33. System.out.println(String.format("parallel sort took: %d ms", millis));
  34. }
  35. private static void test3(List<String> strings) {
  36. strings
  37. .parallelStream()
  38. .filter(s -> {
  39. System.out.format("filter: %s [%s]\n", s, Thread.currentThread().getName());
  40. return true;
  41. })
  42. .map(s -> {
  43. System.out.format("map: %s [%s]\n", s, Thread.currentThread().getName());
  44. return s.toUpperCase();
  45. })
  46. .sorted((s1, s2) -> {
  47. System.out.format("sort: %s <> %s [%s]\n", s1, s2, Thread.currentThread().getName());
  48. return s1.compareTo(s2);
  49. })
  50. .forEach(s -> System.out.format("forEach: %s [%s]\n", s, Thread.currentThread().getName()));
  51. }
  52. private static void test2(List<String> strings) {
  53. strings
  54. .parallelStream()
  55. .filter(s -> {
  56. System.out.format("filter: %s [%s]\n", s, Thread.currentThread().getName());
  57. return true;
  58. })
  59. .map(s -> {
  60. System.out.format("map: %s [%s]\n", s, Thread.currentThread().getName());
  61. return s.toUpperCase();
  62. })
  63. .forEach(s -> System.out.format("forEach: %s [%s]\n", s, Thread.currentThread().getName()));
  64. }
  65. private static void test1() {
  66. // -Djava.util.concurrent.ForkJoinPool.common.parallelism=5
  67. ForkJoinPool commonPool = ForkJoinPool.commonPool();
  68. System.out.println(commonPool.getParallelism());
  69. }
  70. }

Java8-Stream-No.12的更多相关文章

  1. java List递归排序,传统方式和java8 Stream优化递归,无序的列表按照父级关系进行排序(两种排序类型)

    当有一个List列表是无序的,List中的数据有parentid进行关联,通过java排序成两种排序类型: 所用的测试列表最顶级无parentid,若为特殊值,修改下判断方法即可. 第一种排序:按照树 ...

  2. 简洁又快速地处理集合——Java8 Stream(下)

    上一篇文章我讲解 Stream 流的基本原理,以及它与集合的区别关系,讲了那么多抽象的,本篇文章我们开始实战,讲解流的各个方法以及各种操作 没有看过上篇文章的可以先点击进去学习一下 简洁又快速地处理集 ...

  3. 【转】Java8 Stream 流详解

      当我第一次阅读 Java8 中的 Stream API 时,说实话,我非常困惑,因为它的名字听起来与 Java I0 框架中的 InputStream 和 OutputStream 非常类似.但是 ...

  4. java8 Stream的实现原理 (从零开始实现一个stream流)

    1.Stream 流的介绍 1.1 java8 stream介绍 java8新增了stream流的特性,能够让用户以函数式的方式.更为简单的操纵集合等数据结构,并实现了用户无感知的并行计算. 1.2  ...

  5. 简洁又快速地处理集合——Java8 Stream(上)

    Java 8 发布至今也已经好几年过去,如今 Java 也已经向 11 迈去,但是 Java 8 作出的改变可以说是革命性的,影响足够深远,学习 Java 8 应该是 Java 开发者的必修课. 今天 ...

  6. Java8 Stream性能如何及评测工具推荐

    作为技术人员,学习新知识是基本功课.有些知识是不得不学,有些知识是学了之后如虎添翼,Java8的Stream就是兼具两者的知识.不学看不懂,学了写起代码来如虎添翼. 在上篇<Java8 Stre ...

  7. Java8 Stream新特性详解及实战

    Java8 Stream新特性详解及实战 背景介绍 在阅读Spring Boot源代码时,发现Java 8的新特性已经被广泛使用,如果再不学习Java8的新特性并灵活应用,你可能真的要out了.为此, ...

  8. 如何通过 IntelliJ IDEA 来提升 Java8 Stream 的编码效率

    本文翻译整理自:https://winterbe.com/posts/2015/03/05/fixing-java-8-stream-gotchas-with-intellij-idea 作者:@Wi ...

  9. 如何用Java8 Stream API找到心仪的女朋友

    传统的的Java 集合操作是有些啰嗦的,当我们需要对结合元素进行过滤,排序等操作的时候,通常需要写好几行代码以及定义临时变量. 而Java8 Stream API 可以极大简化这一操作,代码行数少,且 ...

  10. 何用Java8 Stream API进行数据抽取与收集

    上一篇中我们通过一个实例看到了Java8 Stream API 相较于传统的的Java 集合操作的简洁与优势,本篇我们依然借助于一个实际的例子来看看Java8 Stream API 如何抽取及收集数据 ...

随机推荐

  1. Java—System类入门学习

    第三阶段 JAVA常见对象的学习 System类 System类包含一些有用的字段和方法,他不能被实例化 //用于垃圾回收 public static void gc() //终止正在运行的java虚 ...

  2. [转帖]curl网站开发指南

    curl网站开发指南 http://www.ruanyifeng.com/blog/2011/09/curl.html linux 里面有非常多很好的工具 比如这个 curl 之前 以为 wget 就 ...

  3. day04_XPATH提取数据

    1.XML简介 1.1.定义 ​ 可扩展标记语言(EXtensible Markup Language) 1.2.特点 一种标记语言,很类似 HTML XML 的标签需要我们自行定义 被设计为具有自我 ...

  4. Django ORM相关的一些操作

    一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 ...

  5. ReLeQ:一种自动强化学习的神经网络深度量化方法

    ReLeQ:一种自动强化学习的神经网络深度量化方法     ReLeQ:一种自动强化学习的神经网络深度量化方法ReLeQ: An Automatic Reinforcement Learning Ap ...

  6. TCP协议探究(一):报文格式与连接建立终止

    一 TCP:传输控制协议报文格式 1 TCP服务 提供面向连接.可靠的字节流服务 面向连接意味着两方通信,不支持多播和广播 可靠性的支持: 应用数据被分割成TCP认为最适合发送的数据块.由TCP传递给 ...

  7. linux - 卸载python

    2019年10月15日12:05:42 [root@spider1 bin]# rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps ##强制 ...

  8. struts 漏洞

    安装shop++ 安装成功 访问 http://127.0.0.1:8080 即网站首页 访问 http://127.0.0.1:8080/admin 即网站后台

  9. [LeetCode] 39. Combination Sum ☆☆☆(数组相加等于指定的数)

    https://leetcode.wang/leetCode-39-Combination-Sum.html 描述 Given a set of candidate numbers (candidat ...

  10. vscode 踩坑汇总

    gopls 提示 update 将 "go.useLanguageServer": true 改为 "go.useLanguageServer": false