首页 > 编程语言 >Java 并发 - Spliterator 接口

Java 并发 - Spliterator 接口

时间:2023-01-08 22:23:09浏览次数:34  
标签:遍历 Java list System Spliterator 并发 println out

Spliterator 介绍

Spliterator 接口是 Java 为了并行遍历数据源中的元素而设计的迭代器,这个可以类比最早 Java 提供的顺序遍历迭代器 Iterator,但一个是顺序遍历,一个是并行遍历。
从最早顺序遍历迭代器 Iterator 时,那个时候还是单核时代,但现在多核时代下,顺序遍历已经不能满足需求了,如何把多个任务分配到不同核上并行执行,才是能最大发挥多核的能力,所以 Spliterator 应运而生啦。

使用示例

public class Test {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        for (int i = 0; i < 50 ; i++) {
            list.add(i+"");
        }
        // 分割迭代器
        Spliterator spliterator = list.spliterator();
        Spliterator s1 = spliterator.trySplit();
        Spliterator s2 = spliterator.trySplit();

        System.out.println("=============== list ================");
        spliterator.forEachRemaining((i) -> System.out.print(i+" "));
        System.out.println();
        System.out.println("=============== s1 ================");
        s1.forEachRemaining((i) -> System.out.print(i+" "));
        System.out.println();
        System.out.println("=============== s2 ================");
        s2.forEachRemaining((i) -> System.out.print(i+" "));
        System.out.println();
    }
}

=============== list ================
37 38 39 40 41 42 43 44 45 46 47 48 49
=============== s1 ================
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
=============== s2 ================
25 26 27 28 29 30 31 32 33 34 35 36

标签:遍历,Java,list,System,Spliterator,并发,println,out
From: https://www.cnblogs.com/feiqiangsheng/p/17035584.html

相关文章

  • Kafka学习笔记(十二):Java Consumer
    JavaConsumerStringboostrapServers="127.0.0.1:9092";StringgroupId="my-second-application";Stringtopic="demo_java";//createconsumerconfigsProp......
  • JAVAC报错:仅当显示请求注释处理时才接受类名称
    JAVAC报错:仅当显示请求注释处理时才接受类名称 在做JAVAC的时候提示:仅当显示请求注释处理时才接受类名称.发现是因为JAVAC后的参数没有写.JAVA的后缀名。写下来......
  • JAVA_Fastjosn_2
    0x00前言本篇介绍的是fastjson1.2.24之前的利用Fastjson的序列化和反序列化不是java原生的反序列化,这点我在学fastjson的原理的时候就知道了,大概有下列一些不同。变量......
  • java基础
    注释单行注释//多行注释/**/文档注释/***/标识符关键字publicstaticvoid等​首字母大小写美元符号或者下划线​首字母之后大小写美元符号下划线或者数值等......
  • Kafka学习笔记(十一):Java Producer
    KafkaJavaProgrammingpackageio.conduktor.demos.kafka;importorg.apache.kafka.clients.producer.KafkaProducer;importorg.apache.kafka.clients.producer.Prod......
  • jmap——Java内存分析工具
    jmap是JDK自带的监控工具,在JDK的根目录中可以找到。主要用来查看Java进程对内存的使用情况1、查看类列表,包含实例数、占用内存大小#pid是进程IDjmap-histo:livepid......
  • 关于Java,Java环境配置
    Java虚拟机JVMJava特性和优势简单性面向对象可移植性高性能分布式动态性多线程安全性健壮性Java三个版本JavaSe标准版(桌面程序、控制台开发)JavaMe嵌入式开发JavaEE......
  • 09.(结构型模式)java设计模式之装饰器模式
    一、什么是装饰器模式简介:也叫包装设计模式,属于结构型模式,它是作为现有的类的一个包装,允许向一个现有的对象添加新的功能,同时又不改变其结构。给对象增加功能,一般两种......
  • java代码的基本组成
    我们可以通过上一篇博客写的内容来分析java代码的组成java代码的组成我们可以大致分成4个部分一、标识符除了关键字(有颜色的,可以看到上方图片)以外,自己们写的单词(黑色部分......
  • java:跳跃——寻找路径
    题目描述小蓝在一个n行m列的方格图中玩一个游戏。开始时,小蓝站在方格图的左上角,即第1行第1列。小蓝可以在方格图上走动,走动时,如果当前在第r 行第 c 列,他不能走到行号......