java 锁-java乐观锁和悲观锁
大家都知道:Java是一门非常强大的编程语言,特色突出,性能卓越,几乎在你说得出名称的所有计算平台上,都或多或少会浮现出Java的影子。在每月更新一次的TIOBE编程语言排行榜上,Java一直位列榜首。
TIOBE
The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings.
It is important to note that the TIOBE index is not about thebestprogramming language or the language in whichmost lines of codehave been written.
谷歌翻译:TIOBE编程社区索引是编程语言流行度的指标。索引每月更新一次。评级基于全球技术工程师,课程和第三方供应商的数量。流行的搜索引擎,如谷歌,必应,雅虎,维基百科,亚马逊,YouTube和百度,用于计算评级。
值得注意的是,TIOBE索引与最佳编程语言或编写大多数代码行的语言无关。
在Java坑里的小伙伴,和准备在北上广深大展拳脚的小伙伴,不妨先来感受一下拉勾网上Java工程师的招聘信息:
北京
上海
广州
深圳
没错!列这么多只是为了强调并发的重要。下面我们来简单了解一下并发。
什么是并发?
目前,计算机系统(以及其他相关系统,如平板电脑、智能手机等)可以让你同时执行多项任务。这是因为它们拥有并发的操作系统,能够同时控制多项任务。
并发编程就是使用你最喜欢的编程语言中的并发API,实现一个可以同时执行多项任务(读取文件、显示消息、读取网络上的数据)的应用程序。并发编程涵盖了在一台计算机上同时运行多个任务或进程所需的所有工具和技术,以及任务或进程之间为消除数据丢失或不一致而进行的通信和同步。
为什么会有并发?
计算机系统的用户总是希望自己的系统具有更好的性能。他们想要获得质量更高的视频、更好的视频游戏和更快的网络速度。几年前,提高处理器的速度可以为用户提供更好的性能。但是如今,处理器的速度并没有加快。取而代之的是,处理器增加了更多核心,这样操作系统就可以同时执行多个任务。这就是所谓的并发处理。
Java并发
Java提供了一套非常强大的并发API,让你不费吹灰之力就可以实现任何类型的并发应用程序。在Java的每个版本中,该并发API提供给程序员的功能都有所增加。从Java 8开始,已经包含了流API以及一些便于实现并发应用程序的新方法和类。Java 提供的这套非常强大的并发API,可以轻松实现任何类型的并发应用程序。
Java并发学习资料
推荐给大家一本近年来不可多得的、专门介绍Java并发编程的图书。在图灵上个月发布的新书书讯中java 锁,这本书备受期待。对于致力于Java大型程序设计、并行计算、分布式计算和大数据分析处理等方向的科研人员和工程人员来说,它值得一读。可以说本书是从并发处理的视角来探讨Java编程,也可以说是从Java的视角探讨并发处理。
作者:Javier Fernández González
译者:唐富年
定价:89.00元
本书讲述了Java并发API最重要的元素,展示了如何在实际开发中使用它们。这些元素如下所示。
此外,Java并发API还包含更多内容,包括设计并发应用程序的方法论、设计模式、实现良好并发应用程序的提示和技巧、测试并发应用程序的工具和方法,以及采用其他面向Java虚拟机的语言 (例如Clojure、Groovy和Scala)实现并发应用程序的方法。
但要阅读本书,需要预先了解Java语言的一些基础知识,需要有一些基本的Java程序设计经验,最好还了解一些并行计算或者数据处理的相关技术。译者不建议Java语言的初学者直接学习本书。
在本书出版的过程中有很多插曲java 锁,其实本书第一版并未面世。
当2016年本书第1版(《精通Java 8并发编程》)刚出版时,图灵公司就敏锐洞察到本书的价值,并立即开始组织翻译工作。遗憾的是,此后不久官方就宣布了Java 9即将发布的消息。2017年,Java 9正式发布后,作者迅速推出了针对Java 9并发编程的第2版图书,因此原书第1版虽然已经翻译完成,但是最终没能跟读者见面。
在第2版中,作者修订了原书第1版的若干错误,更换了部分演示代码,增删了部分章节,使全书内容更具系统性,同时也增加和融入了Java 9的一些新特性。该书的主要特点如下。
本书内容
第1章,“第一步:并发设计原理”。这一章将介绍并发应用程序的设计原理。你还将了解到并发应用程序可能出现的问题,以及设计并发应用程序的方法论,同时还会学到一些设计模式、提示和技巧。
第2章,“使用基本元素:Thread和Runnable”。这一章将解释如何采用Java语言中最基本的元素(Runnable接口和Thread类)来实现并发应用程序。有了这些元素,你可以创建一个可与实际执行线程并行执行的新执行线程。
第3章,“管理大量线程:执行器”。这一章将介绍执行器框架的基本原理。该框架让你能够使用大量的线程,而无须创建或管理它们。你将实现k-最近邻算法和一个基本的客户端/服务器应用程序。
第4章,“充分利用执行器”。这一章将探讨执行器的一些高级特性,包括为了在一段延迟之后或每隔一定时间执行任务而进行的任务撤销和调度。你将实现一个高级客户端/服务器应用程序和一个新闻阅读器。
第5章,“从任务获取数据:Callable接口与Future接口”。这一章将介绍如何在执行器中处理采用Callable与Future接口返回结果的任务。你将实现一个最佳匹配算法以及一个构建倒排索引的应用程序。
第6章,“运行分为多阶段的任务:Phaser类”。这一章将介绍如何使用Phaser类来并发执行那些可分为多个阶段的任务。你将实现关键字抽取算法和遗传算法。
第7章,“优化分治解决方案:Fork/Join框架”。这一章将介绍如何使用一种特殊的执行器,该执行器针对可以使用分治法解决的问题进行了优化,这就是Fork/Join框架及其工作窃取(work-stealing)算法。你将实现k-means聚类算法、数据筛选算法以及归并排序算法。
第8章,“使用并行流处理大规模数据集:MapReduce模型”。这一章将介绍如何采用流来处理大规模数据集。你将学习如何使用流API和更多的流函数来实现MapReduce应用程序。你将实现一个数值汇总算法和一个信息检索工具。
第9章,“使用并行流处理大规模数据集:MapCollect模型”。这一章将探讨如何使用流API中的collect()方法对数据流执行可变约简(mutable reduction)操作,将其转换为一种不同的数据结构,包括在Collectors类中预定义的一些收集器。你将实现一个无须建立索引就能够搜索数据的工具、一个推荐系统,以及计算社交网络中两个人的共同联系人列表的算法。
第10章,“异步流处理:反应流”。这一章将解释如何使用反应流来实现并发应用程序,而反应流则为带有非阻塞回压的异步流处理定义了标准。这种流的基本原理在官方网站的Reactive Streams介绍页面上有明确说明,而Java 9为其实现提供了必要的基础接口。
第11章,“探究并发数据结构和同步工具”。这一章将介绍如何使用最重要的并发数据结构(可用于并发应用程序而不会导致数据竞争条件的数据结构),以及Java并发API中用于组织任务执行的所有同步机制。
第12章,“测试与监视并发应用程序”。这一章将介绍如何获得Java并发API元素(线程、锁、执行器等)的状态信息。你还将学习如何使用JConsole应用程序来监视并发应用程序,以及如何使用MultithreadedTC库和Java Pathfinder应用程序来测试并发应用程序。
第13章,“JVM中的并发处理:Clojure、带有Gpars库的Groovy以及Scala”。这一章将介绍如何使用面向Java虚拟机的其他编程语言来实现并发应用程序。你将学习如何使用Clojure、Scala以及带有Gpars库的Groovy等编程语言所提供的并发元素。
扫一扫,京东购
扫一扫,当当购
扫一扫,购电子版
文末福利
小伙伴留言说说你印象中Java有什么优点,又有哪些不足?本期送出5本《精通Java并发编程(第2版)》,精选评论中随机挑选5人送书,截止到10月16日14:00。
如果有条锦鲤奖落在你身上,你希望它是什么?留言跟大家分享一下吧~
☟更多Java开发相关图书