Java8 函数式编程 PDF 版

  • 更新时间:
  • 9705人关注
  • 点击下载

Java8 函数式编程》是一本关于Java8相关的电子书资源,介绍了关于Java8、函数式编程、Java8编程方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小100 MB,沃伯顿编写,目前豆瓣、亚马逊、当当、京东等综合评分为:8.1分,一起来看下具体内容。

编辑推荐

对于有经验的Java程序员来说,全面了解Java 8引入的Lambda表达式是当务之急。本书作者是资深Java开发者、英国伦敦Java社区负责人,英文原版深受好评,被誉为学习Lambda表达式的必读佳作。这本书言简意赅,示例精到,全面介绍了因为Lambda表达式的引入,Java这门世界上*流行的语言都发生了哪些重大变化,以及匿名函数将如何重塑Java的编程范式。全书篇幅不长,环环相扣,读来令人手不释卷。

函数式编程的确能大幅提升编程效率,但它也并不高深,绝非少数人的游戏。本书可以让所有Java程序员平滑过渡到Java 8时代。前半部分展示了如何正确使用Lambda表达式;后面几章介绍如何利用Lambda表达式提高并发操作的性能、编写出更简单的并发代码。全书采用了示例驱动的写作风格:每介绍完一个概念,紧接着给出一段示例代码,并辅以详尽的讲解。多数章节还在*后提供了练习题,供读者自行练习。
本书主要内容:
通过每一章的练习快速掌握Java 8中的Lambda表达式
分析流、高级集合和其他Java 8类库的改进
利用多核CPU提高数据并发的性能
将现有代码库和库代码Lambda化
学习Lambda表达式单元测试和调试的实践解决方案
用Lambda表达式实现面向对象编程的SOLID原则
编写能有效执行消息传送和非阻塞I/O的并发应用

内容简介

多年以来,函数式编程被认为是少数人的游戏,不适合推广给普罗大众。写作此书的目的就是为了挑战这种思想。本书将探讨如何编写出简单、干净、易读的代码;如何简单地使用并行计算提高性能;如何准确地为问题建模,并且开发出更好的领域特定语言;如何写出不易出错,并且更简单的并发代码;如何测试和调试Lambda表达式。
如果你已经掌握Java SE,想尽快了解Java 8新特性,写出简单干净的代码,那么本书不容错过。

作者简介

Richard Warburton 一位经验丰富的技术专家,善于解决复杂深奥的技术问题,拥有华威大学计算机科学专业博士学位。近期他一直从事高性能计算方面的数据分析工作。他是英国伦敦Java社区的领导者,组织过面向Java 8中Lambda表达式、日期和时间的Adopt-a-JSR项目,以及Openjdk Hackdays活动。Richard还是知名的会议演讲嘉宾,曾在JavaOne、DevoxxUK和JAX London等会议上演讲。
王群锋,毕业于西安电子科技大学,现任职于IBM西安研发中心,从事下一代统计预测软件的开发运维工作。

目录

前言
第1章简介
第2章Lambda表达式
第3章流
第4章类库
第5章高级集合类和收集器
第6章数据并行化
第7章测试、调试和重构
第8章设计和架构的原则
第9章使用Lambda表达式编写并发程序
第10章下一步该怎么办
封面介绍

展开阅读
精选笔记1:Java8并行流中自定义线程池操作示例

3小时53分钟前回答

本文实例讲述了Java8并行流中自定义线程池操作。分享给大家供大家参考,具体如下:

1.概览

java8引入了流的概念,流是作为一种对数据执行大量操作的有效方式。并行流可以被包含于支持并发的环境中。这些流可以提高执行性能-以牺牲多线程的开销为代价

在这篇短文中,我们将看一下 Stream API的最大限制,同时看一下如何让并行流和线程池实例(ThreadPool instance)一起工作。

2.并行流Parallel Stream

我们先以一个简单的例子来开始-在任一个Collection类型上调用parallelStream方法-它将返回一个可能的并行流。

@Test
publicvoidgivenList_whenCallingParallelStream_shouldBeParallelStream(){
  List aList = newArrayList<>();
  Stream parallelStream = aList.parallelStream();
  assertTrue(parallelStream.isParallel());
}

这样的流的默认处理流程是使用ForkJoinPool.commonPool(),这是一个被整个应用程序所共享的线程池。

3.自定义线程池

在处理流的时候,我们可以传递自定义一个线程池。下面的例子中,我们有一个并行流,这个并行流使用了一个自定义的线程池去计算1到 1,000,000的和:

@Testpublic void giveRangeOfLongs_whenSummedInParallel_shouldBeEqualToExpectedTotal() throws InterruptedException, ExecutionException { long firstNum = 1; long lastNum = 1_000_000; List aList = LongStream.rangeClosed(firstNum, lastNum).boxed()
   .collect(Collectors.toList());
  ForkJoinPool customThreadPool = new ForkJoinPool(4);
  long actualTotal = customThreadPool.submit(
   () -> aList.parallelStream().reduce(0L, Long::sum)).get();
  assertEquals((lastNum + firstNum) * lastNum / 2, actualTotal);
}

我们使用ForkJoinPool的构造方法并设定并行级别为4去创建一个线程池。要想确定不同环境的最优值(optimal),我们需要试验一下。一个好的做法就是,基于你CPU的核数来确定并行级别的数值。

4.总结

我们简要地看了一下,如何使用一个自定义的Thread Pool运行并行流。只要在正确的环境中配置了合适的平行级别,就能在确定的情况下获得较高的执行性能。

更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

展开阅读

Java8相关资源

  • Java JDK8 学习笔记

    Java JDK8 学习笔记

    本书针对Java SE 8新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新,详细介绍了JVM、JRE、Java SE API、JDK与IDE之间的对照关系,从Java SE API的源代码分析,了解各种语法在Java SE API中的具体应用

    大小:92.3 MBJava

    立即下载
  • IBM SDK Java V8用户指南中文版(2019)

    IBM SDK Java V8用户指南中文版(2019)

    Java 平台的 IBM 实现是以 Oracle Corporation 开发的 Java Technology 为基础的。IBM 提供一个可安装软件包:软件开发者工具包 (SDK)。在随后的部分中详细介绍了该软件包中的关键组件。 本版本的用户指南适用于 IBM SDK, Java Technology Edition V8 及其所有后续发行版和修订版,直到在新版本中另有声明为止 IBM SDK Java Technology Edition V8 用户指南中文版的PDF文档,共计364页,可以系统性的了

    大小:5.6 MBJava

    立即下载
  • Java核心技术卷Ⅰ:基础知识(第8版)

    Java核心技术卷Ⅰ:基础知识(第8版)

    Java核心技术(原书第8版) Java核心技术卷Ⅰ:基础知识 作者:(美)昊斯特曼著,叶乃文,邝劲筠,杜永萍译 出版时间:2008-6-1 丛编项:SUN公司核心技术丛书

    大小:258.92MBJava

    立即下载
  • Java 8实战

    Java 8实战

    大小:12.9MBJava8

    立即下载
  • Java虚拟机规范:Java SE 8版

    Java虚拟机规范:Java SE 8版

    书是Oracle官方发布,Java虚拟机技术创建人撰写,国内资深Java技术专家翻译,是深度了解Java虚拟机和Java语言实现细节的必读之作,它完整地讲述了由JavaSE8所引入的新特性 Java虚拟机规范(Jav

    大小:161.2 MBJava

    立即下载
  • Java完全参考手册(第8版)

    Java完全参考手册(第8版)

    Java完全参考手册(第8版) 作者:(美)施密特著,王德才,吴明飞,唐业军译 清华大学 出版时间:2012 在《Java完全参考手册(第8版)》中,编程畅销书作者HerberSchildt向您展示了开发、编译、调试以及运行Java程序所需要掌握的全部知识。本书内容丰富,针对JavaSE7进行了全面更新,涵盖了Java语言的方方面面,包括语法、关键字以及基本的编程原则。此外,《Java完全参考手册(第8版)》还介绍了JavaAPI库的关键元素,分析了JavaBean、servlet、applet以及Swi

    大小:129.87MBJava手册

    立即下载

学习笔记

10小时24分钟前回答

Java8如何构建一个Stream示例详解

Stream初体验 Stream是Java8中操作集合的一个重要特性,我们先来看看Java里面是怎么定义Stream的: "A sequence of elements supporting sequential and parallel aggregate operations." 我们来解读一下上面的那句话: 1、Stream是元素的集合,这点让Stream看起来用些类似Iterator; 2、可以支持顺序和并行的对原Stream进行汇聚的操作。 Stream的创建方式有很多种,除了最常见的集合创建,还有其他几种方式。 List转Stream List继承自Collection接口,而Collection提供了stream()方法。 ListInteger list = Lists.newArrayList(1, 2, 3);StreamInteger stream = list.stream(); 数组转stream 对于数组,Arrays提供了stream()方法。 String[] arr = new String[]{"a", "b", "c"};StreamString stream = Arr……

9小时53分钟前回答

java8中forkjoin和optional框架使用

并行流与串行流 并行流就是把一个内容分成多个数据块,并用不同的线程分别处理每个数据块的流。 java 8 中将并行进行了优化,我们可以很容易的对数据进行并行操作。Stream API 可以声明性地通过 parallel()与 sequential()在并行流与顺序流之间进行切换。 了解 Fork/Join 框架 Fork/Join 框架:就是在必要的情况下,将一个大任务,进形拆分(fork)成若干个小任务(拆到不可再拆时),再将一个个的小任务运行的结果进行join汇总。 Fork/Join 框架与传统线程池的区别: 采用“工作窃取”模式(work-stealing): 当执行新的任务时,它可以将其拆分成更小的任务执行,并将小任务加到线程队列中,然后再从一个随机……