
目录 Java8 并行 并行 并行化操作 实现(fork/join) Divide and conquer算法 work-stealing算法 并行线程池 自定义线程池 使用 限制 线程安全 reduce操作 无干扰 性能 数据大小 源数据结构 装箱 核的数量 单元处理开销 关联 坑 java8与设计原则 单一职责 开闭原则 依赖倒置原则
目录 问题解答 Comparator是函数式接口,为什么包含equals这些方法。 函数式接口,除了只能有一个抽象方法外,还可以包含Object 中覆盖的方法,也就是 equals,toString,hashcode等方法。 接口不能提供对Object类的任何方法的默认实现。 lambda VS 内部类,通过看字节码的方式,看差异。 Lambda表达式不是简单的匿名内部类的语法糖。 大多数情况lambda性能更优。官方链接 编译器会为每一个匿名内部类创建一个类文件。类加载更耗时,占用更多的内存。 lambda如果编译成匿名内部类形式的字节码。那就与匿名内部类的字节码生成机制绑定,可能会限制以后可能进行的优化。 lambda性能问题 为什么使用函数式编程 范式的转变 跟上语言的发展潮流 控制权转让给语言/运行时 简洁 Java8新特性补充 构造函数引用 Optional类型 原始类型流 lambda实战 聚合reduce 收集collect
前言 自从有了Java8,Java语言和库仿佛获得了新生。本次分享的<>只是<<快学Java SE8>>中的第一次分享,后面还会有函数式编程一、二等,之所以叫快学就是希望和大家一起快速切入主题,尽快了解Java8并实践。 本次分享目录 分享后的练习题 lambda 使用java.io.File类的list(FilenameFilter)方法,编写一个返回指定目录下、具有指定扩展名的所有文件。使用lambda表达式(而不是FilenameFilter)来实现。 从你的项目中选取一个包含ActionListener、Runnable或者其他类似代码的文件。将他们替换为lambda表达式。这样能节省多少行代码?替换后代码是否具有可读性?过程中是否使用了方法引用。 编写一个静态方法andThen,它接收两个Runnable实例作为参数,并返回一个分别运行这两个实例的Runnable对象。在main方法中,向andThen方法传递两个lambda表达式,并运行返回的实例。 Stream: 将下面的例子编写一个for循环的并行版本,获取处理器的数量,创造出多个独立的线程,每个都只处理列表的一个片段,然后将他们各自的结果汇总起来。 请想办法验证一下,对于获得前5个最长单词的代码,一旦找到第5个最长的单词后,就不会再调用filter方法了。 要统计长单词的数量,使用parallelStream与使用stream有什么区别?请具体测试一下。(可以考虑用一个大文件) 日期&时间: 请不使用plusDays来计算程序员节(程序员节是每年的第256天,也就是平年的9月13日和闰年的9月12日) 编写一个打印你已经生活了多少天的程序。 列出21世纪中的所有星期五 乘坐如下航班,从杭州到洛杉矶,飞机飞行了多长时间?编写一个可以进行这类计算的程序。 分享ppt 分享ppt见附件