首页 > 编程语言 >Java8-并行流的使用

Java8-并行流的使用

时间:2023-06-14 13:45:13浏览次数:32  
标签:List 并行 System long public persons 使用 Java8 out

Java8中的并行流使用

public class StreamTest {
    public List<Person> constructPersons() {

        List<Person> persons = new ArrayList<Person>();
        for (int i = 0; i < 5; i++) {
            Person p = new Person(i, "name" + i, "sex" + i, i);
            persons.add(p);
        }
        return persons;
    }

    /**
     * for
     *
     * @param persons
     */
    public void doFor(List<Person> persons) {
        long start = System.currentTimeMillis();

        for (Person p : persons) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
            System.out.println(p.name);
        }

        long end = System.currentTimeMillis();
        System.out.println("doFor cost:" + (end - start));
    }

    /**
     * 顺序流
     *
     * @param persons
     */
    public void doStream(List<Person> persons) {
        long start = System.currentTimeMillis();

        persons.stream().forEach(x -> {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
            System.out.println(x.name);
        });

        long end = System.currentTimeMillis();
        System.out.println("doStream cost:" + (end - start));
    }

    /**
     * 并行流
     *
     * @param persons
     */
    public void doParallelStream(List<Person> persons) {

        long start = System.currentTimeMillis();

        persons.parallelStream().forEach(x -> {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
            System.out.println(x.name);
        });

        long end = System.currentTimeMillis();

        System.out.println("doParallelStream cost:" + (end - start));
    }

    public static void main(String[] args) {
        StreamTest streamTest = new StreamTest();
        List<Person> personList = streamTest.constructPersons();
        streamTest.doFor(personList);
        streamTest.doStream(personList);
        streamTest.doParallelStream(personList);
    }

    public static void main1(String[] args) {
        Snowflake snowflake = IdUtil.getSnowflake(1, 1);
        long id = snowflake.nextId();
        List<String> orderNos = Collections.synchronizedList(new ArrayList<String>());
        IntStream.range(0,10000000).parallel().forEach(i->{
            orderNos.add(snowflake.nextId()+"");
        });
        System.out.println(orderNos.size());
    }

标签:List,并行,System,long,public,persons,使用,Java8,out
From: https://www.cnblogs.com/ByteSpaceX/p/17479965.html

相关文章

  • SSM各框架使用及整合
    spring常用注解 配置文件说明<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context=&quo......
  • web页面中导出Excel (方法二) 前端easyui-datagrid导出Excel 使用 datagrid-export.js
    这个示例使用 前端easyui-datagrid 后端php 前端easyui-datagrid导出Excel使用了datagrid-export.js datagrid-export.js文件可自行搜索下载优点:查询结果显示在datagrid中(不能分页),前端直接下载不用回后端,效率高速度快。缺点:查询结果不能分页,必须显示全部内容,显......
  • 关于VBA的双引号的使用解疑
    Q:Range("A"&Num)的"A"&Num不就是个范围吗,所以不应该是Range(""A"&Num")吗?A:在VBA中,当您要引用一个范围时,需要使用双引号将其括起来。双引号是告诉VBA,括号内的内容是一个字符串,不需要计算或解释;即使括号内只有一个字母,也必须使用双引号将其括起来。而在你的疑问中,"A"&Nu......
  • 如何使用VIP
    1.编译阶段加入vip库文件;2.env下例化vip的agnt;3.vip一些配置开关在envcfg下面打开;4.tb下做接口连接;5.按场景要求做seq例化;  ......
  • 使用坦克PWA访问助手为自己的局域网应用快速配置免费域名
    这篇教程描述如何使用坦克PWA访问助手。这篇文章简称坦克PWA访问助手为PWA助手。PWA结合了DNS服务器技术和HTTP服务器技术实现,因此它需要系统的53端口和80端口。所以,如果你的电脑有程序占用这两个端口,请关闭这些程序。这些应用会使用53端口:dnsmasq、bind。这些程序则会使用80......
  • 使用Mybatis生成树形菜单-适用于各种树形场景
    开发中我们难免会遇到各种树形结构展示的场景。比如用户登录系统后菜单的展示,某些大型购物网站商品的分类展示等等,反正开发中会遇到各种树形展示的功能,这些功能大概处理的思路都是一样的,所以本文就总结一下树形结构的代码生成,在开发的时候套用这种结构就可以了。好了正文开始,首先......
  • Web.Config中customErrors的使用方法(mode=On|Off|RemoteOnly)
    https://cloud.tencent.com/developer/article/21038021)customErrors中的mode“On”始终显示自定义(友好的)信息。“Off”始终显示详细的ASP.NET错误信息。“RemoteOnly”只对不在本地Web服务器上运行的2)customErrors中的defaultRedirect使之指向自定义错误页的URL......
  • 使用人类棋手棋盘数据训练围棋机器人,实现数据预处理
    知己知彼,百战不殆。我们要打造一个能胜过人类的机器人,就必须要让机器人掌握人类的围棋思维模式,因此我们就需要使用人类棋手留下的棋盘数据训练机器人,让它从数据中掌握人类围棋思维存在的模式和套路。幸运的是,我们能够通过围棋服务器拿到很多由人落子后产生的棋盘数据。很多围棋服务......
  • 使用预先训练好的单词向量识别影评的正负能量
    上一节我们讨论路单词向量化的算法原理。算法的实现需要有大量的数据,一般而言你要收集到单词量在四十亿左右的文本数据才能通过上一节的算法训练处精准的单词向量,问题在于你很难获取如此巨量的数据来训练单词向量,那你该怎么办呢?上一章节,我们采取拿来主义,直接使用别人训练过的卷积网......
  • VUE游戏开发:使用Box2D模拟球体的飞行和撞击特效
    本节,我们将利用Box2d引擎在页面中实现球体飞行和撞击效果。在现实中我们向外抛出一个球时,它在重力加速度的情况下会飞出一个弧线,撞到物体后它会反弹折射,我们利用Box2D可以在页面里模拟这些特性。我们将在页面里绘制一个小球,然后设置一些障碍物,我们用鼠标控制小球向外抛出的方向,小球......