如今,计算机系统(以及其他相关系统,如平板电脑或智能手机)允许您同时执行多项任务。这是可能的,因为它们拥有同时控制多个任务的并发操作系统。如果使用您最喜欢的编程语言的并发 API,您还可以让一个应用执行多个任务(读取文件、显示消息或通过网络读取数据)。Java 包含一个非常强大的并发 API,它允许您轻松实现任何类型的并发应用。此 API 增加了每个版本中为程序员提供的功能。现在,在 Java8 中,它包含了流 API 和新的方法和类,以方便并发应用的实现。本书涵盖了 Java 并发 API 的最重要元素,向您展示了如何在实际应用中使用它们。这些要素如下:
- 执行器框架,用于控制大量任务的执行
- Phaser 类,用于执行可分为阶段的任务
- Fork/Join 框架,用于执行使用分治技术解决问题的任务
- 流 API,用于处理大型数据源
- 并发数据结构,用于在并发应用中存储数据
- 同步机制,用于组织并发任务
但是,它还包括更多内容:设计并发应用的方法、设计模式、实现良好并发应用的技巧和技巧,以及测试并发应用的工具和技术。
第一章第一步——并发设计原则将教您并发应用的设计原则。他们还将学习并发应用可能存在的问题,以及设计并发应用的方法,然后学习一些设计模式、技巧和技巧。
第 2 章管理大量线程–执行器,将教您执行器框架的基本原理。该框架允许您使用大量线程,而无需创建或管理它们。您将实现 k-最近邻算法和一个基本的客户机/服务器应用。
第三章从执行者获取最大值,将教您执行者的一些高级特性,包括取消和调度任务,以在延迟后或每隔一定时间执行任务。您将实现一个高级客户机/服务器应用和一个新闻阅读器。
第 4 章从任务中获取数据–可调用和未来接口将教会您如何在执行者中处理使用可调用和未来接口返回结果的任务。您将实现一个最佳匹配算法和一个应用来构建反向索引。
第 5 章运行分阶段的任务–Phaser 类将教您如何使用 Phaser 类并行执行可分阶段的任务。您将实现关键字提取算法和遗传算法。
第 6 章优化分治解决方案–Fork/Join 框架将教您如何使用一种特殊类型的执行器,该执行器通过分治技术可以解决的问题进行优化:Fork/Join 框架及其偷功算法。您将实现 k-means 聚类算法、数据过滤算法和合并排序算法。
第 7 章使用并行流处理海量数据集–映射和简化模型将教您如何使用流处理大型数据集。在本章中,您将学习如何使用 stream API 和 streams 的更多功能实现映射和缩减应用。您将实现一个数字摘要算法和一个信息检索搜索工具。
第 8 章处理具有并行流的海量数据集–映射和收集模型,将教您如何使用流 API 的 Collect()方法将数据流可变地简化为不同的数据结构,包括收集器类中定义的预定义收集器。您将实现一个无索引搜索数据的工具、一个推荐系统和一个计算社交网络中两个人的常见联系人列表的算法。
第 9 章,*深入探讨并发数据结构和同步工具,*将教您如何使用最重要的并发数据结构(可以在并发应用中使用的数据结构,而不会造成数据争用情况)以及 Java 并发 API 中包含的所有同步机制来组织任务的执行。
第 10 章片段集成和备选方案的实现将教您如何使用共享内存或消息传递,使用并发应用片段自身的并发技术实现大型应用。您还将学习本书中示例的不同实现替代方案。
第 11 章测试和监控并发应用教您如何获取一些 Java 并发 API 元素(线程、锁、执行器等)的状态信息。您还将学习如何使用 Java VisualVM 应用监视并发应用,以及如何使用多线程 DC 库和 Java Pathfinder 应用测试并发应用。
要阅读本书,您需要具备 Java 编程语言的基本知识。对并发概念的基本知识也是受欢迎的。
如果您是一名 Java 开发人员,了解并发编程的基本原理,但希望获得 Java 并发 API 的专家知识,以开发利用计算机所有硬件资源的优化应用,那么本书适合您。
在本书中,您将发现许多文本样式可以区分不同类型的信息。下面是这些风格的一些例子,并解释了它们的含义。
文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄如下所示:“Product
类存储有关产品的信息。”
代码块设置如下:
if (problem.size() > DEFAULT_SIZE) {
divideTasks();
executeTask();
taskResults=joinTasksResult();
return taskResults;
} else {
taskResults=solveBasicProblem();
return taskResults;
}
新术语和重要词语以粗体显示。您在屏幕上看到的文字(例如,在菜单或对话框中)显示在文本中,如下所示:“保留默认值并单击下一步按钮。”
警告或重要注释显示在这样的框中。
提示和技巧如下所示。
我们欢迎读者的反馈。让我们知道你对这本书的看法你喜欢还是不喜欢。读者反馈对我们来说很重要,因为它可以帮助我们开发出您将真正从中获得最大收益的标题。
要向我们发送总体反馈,只需发送电子邮件<[feedback@packtpub.com](mailto:feedback@packtpub.com)>
,并在邮件主题中提及该书的标题。
如果您对某个主题有专业知识,并且您有兴趣撰写或贡献一本书,请参阅我们的作者指南www.packtpub.com/authors。
既然您是一本 Packt 图书的骄傲拥有者,我们有很多东西可以帮助您从购买中获得最大收益。
您可以从您的账户下载示例代码文件 http://www.packtpub.com 对于您购买的所有 Packt 出版书籍。如果您在其他地方购买了本书,您可以访问http://www.packtpub.com/support 并注册,将文件直接通过电子邮件发送给您。
通过以下步骤,您可以下载以下文件:
- 使用您的电子邮件地址和密码登录或注册我们的网站。
- 将鼠标指针悬停在顶部的支架选项卡上。
- 点击代码下载&勘误表。
- 在搜索框中输入图书名称。
- 选择要下载代码文件的书籍。
- 从您购买本书的下拉菜单中选择。
- 点击代码下载。
下载文件后,请确保使用以下最新版本解压或解压缩文件夹:
- WinRAR/7-Zip for Windows
- 适用于 Mac 的 Zipeg/iZip/UnRarX
- 适用于 Linux 的 7-Zip/PeaZip
虽然我们已尽一切努力确保内容的准确性,但错误确实会发生。如果您在我们的一本书中发现错误,可能是文本或代码中的错误,如果您能向我们报告,我们将不胜感激。通过这样做,您可以使其他读者免于沮丧,并帮助我们改进本书的后续版本。如果您发现任何错误,请访问进行报告 http://www.packtpub.com/submit-errata ,选择您的书籍,点击勘误表提交表链接,输入您勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上载到我们的网站或添加到该标题勘误表部分下的任何现有勘误表列表中。
要查看之前提交的勘误表,请转至https://www.packtpub.com/books/content/support 并在搜索字段中输入图书名称。所需信息将出现在勘误表部分下。
在互联网上盗版版权材料是所有媒体都面临的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上发现任何形式的非法复制品,请立即向我们提供地址或网站名称,以便我们采取补救措施。
请致电<[copyright@packtpub.com](mailto:copyright@packtpub.com)>
与我们联系,并提供可疑盗版材料的链接。
我们感谢您在保护我们的作者方面提供的帮助以及我们为您带来有价值内容的能力。
你知道吗,Packt 提供每本出版书籍的电子书版本,并提供 PDF 和 ePub 文件?您可以在www.PacktPub.com升级到电子书版本,作为印刷书籍客户,您有权享受电子书版本的折扣。详情请致电<[customercare@packtpub.com](mailto:customercare@packtpub.com)>
与我们联系。
在www.PacktPub.com上,您还可以阅读免费技术文章集,注册一系列免费时事通讯,并获得 Packt 书籍和电子书的独家折扣和优惠。
如果您对本书的任何方面有任何问题,可以通过<[questions@packtpub.com](mailto:questions@packtpub.com)>
与我们联系,我们将尽力解决该问题。