成功加入购物车

去购物车结算 X
陶情逸轩
  • Java高并发与集合框架:JCF和JUC源码分析与实现

Java高并发与集合框架:JCF和JUC源码分析与实现

举报

正版图书保证质量 七天无理由退货让您购物无忧

  • 作者: 
  • 出版社:    电子工业出版社
  • ISBN:    9787121422652
  • 出版时间: 
  • 版次:    1
  • 装帧:    平装
  • 开本:    16开
  • 出版时间: 
  • 版次:  1
  • 装帧:  平装
  • 开本:  16开

售价 79.70 6.7折

定价 ¥119.00 

品相 全新品相描述

优惠 满包邮

优惠 满减券
    运费
    本店暂时无法向该地区发货

    延迟发货说明

    时间:
    说明:

    上书时间2024-02-21

    数量
    仅1件在售,欲购从速
    微信扫描下方二维码
    微信扫描打开成功后,点击右上角”...“进行转发

    卖家超过10天未登录

    • 商品详情
    • 店铺评价
    手机购买
    微信扫码访问
    • 商品分类:
      计算机与互联网
      货号:
      R_11334080
      品相描述:全新
      全新正版
      商品描述:
       前言 1.写在开篇 为什么撰写本书 笔者一直在信息系统建设的一线工作,承担过多种不同的工作职责。在工作中,笔者常和掌握不同技术的朋友讨论具体问题的解决方案,发现在Java体系中,大家使用多的是Java集合框架(JCF)和Java并发工(JUC)。实际上,JCF和JUC已能够覆盖笔者及朋友们工作中遇到的超过8成的应用场景,但是大家往往无法快速匹配合适的技术方案。此外,在JCF和JUC中存在大量可以在实际工作中借鉴的设计方案,虽然网络上有一些零散的关于集合的介绍,但深入讲解其工作原理的内容并不多,甚有一些资料存在质量问题。 笔者“撸码17年,庆幸头未秃、智未衰。于是笔者在1年前产生了这样的想法,希望将自己在实际工作中梳理结的JCF、JUC的相关知识成体系地介绍给大家,也希望将自己在阅读K源码括JCF、JUC、I/O、NET等模块)结和思考的可用于实际工作的技术手段成体系地分享给大家。 有了想法,便着手行动,过大半年的整理、撰写、调整,终成本书。因个人水平有限,书中难免有错误和疏漏之处,希望各位读者能诚意指出、不吝赐教。此外,各位读者可以直接通过笔者的邮箱yin-wen-jie@163.com联系笔者本人。 关于本书选择的K版本 由于K版本迭代速度较快,本书的整理和撰写又需要一个较长的时间,并且书中内括大量源码分析和讲解,因此本书首先要解决的问题,是选定一个本行源码讲解和分析所依据的K版本。 这个问题需要从K版本的更新特点、大家使用K版本的撰写本书的目的来考虑,目前大家在实际工作中使用多的版本是K 1.8和K 11,并且出于对Oracle商业运作的考虑,K 11之后的升级版本已不再免费提供,因此大家在生产环境中一般使用Open K作为运行环境。同样出于对Oracle商业运作的考虑,K版本的发布周期固定为每半年发布一个大版本、每3年发布一个LTS/LMS版本(支持版本),截21年4月,K 16已发布(K 16是一个短期过渡版本),紧接着21年9月,K 17正式发布(这是一个LTS/LMS版本),这显然加大了读者学选K版本的工作量。 好消息是Oracle基本开源了所有已成熟的K版本,是否商业化运行并不会影响我们对这些K源码的学要不用于商业用途),而且K版本的向下兼容保证了读者在了解K的工作原理后,可以将其应用到自己正在使用的K版本上。此外,越新的K版本对关键数据结构、关键算法实现过程的优化越多,本书希望在讲解过程中,可以尽可能多地将这些有益的优化点介绍给读者。 在综合考虑各因素后,本书将K 14作为本书讲解源码依据的主要版本(在后续内容中,如果不说明,那么代码分析都是基于K 1行的)。K 14是在整理、编写本书时发布的版本。在该版本中,与本书主要内容有关的数据结构、核心算法、设计方案和之前的版本基本保持稳定和兼容,便于读者在常用的K 1.8、K 11中找到对应的实现位置。本书介绍的K 14中的源码内容是开源的,读者可以在Oracle官方网站直接下载这些源码。 本书的目标读者 本书前半部分可以作为Java编程的入门学,也可以作为初学行JCF部分知识查漏缺的参考资料;本书后半部分对基础知识有的要求,适合有一些Java编程基础的程序员阅读。此外,本书可以作为程序员对JCF部分和JUC部分知识结行梳理的参考用书。 2.本书约定 1)关于源码注释及代码格式。 本书中有大量基于K 14的源码片段。笔者会对这些源码片段逐段说明、逐条分析,读者不用担心无法读懂这些源码。此外,大部分章节在对源行分析后,会使用图文方式对源码中的重要知识行归纳结。 引用大量的源码会占用篇幅。为了尽可能节约纸张,本书中的示例代码没有遵循Jav的注释规范和代码格式规范,本书会对代码和注行格式压缩。本书主要采用以下两种格式压缩方式。 ? 采用单行注释代替多行注释。 Jav的多行注释方式采用的是“/***/”,如下所示。 /** * Creates a new, empty map with an initial table size * accommodating the specified number of elements without the need * to dynamically resize. * * @throws IllegalArgumentException if the initial capacity of * elements is negative */ 这种注释方式清晰且容易阅读,但是占用了过长的篇幅,所以本书会将上述注释转换为单行注释,如下所示。 // Basic hn node, used for most entries. // (See below for TreeNode class, and in LinkedHashMap for its Entry // class.) ? 采用压缩格式替换单行代码块。 如果代码块中只有一行代码,那么Java允许省略代码块中的大括号“{}”。例如,在if语句的代码块中,如果只有一行执行代码,则可以采用如下方行书写。 if (c == 0) result = v; 但这种书写方式容易在排布紧凑的局部位置引起阅读障碍,所以针对源码中的这种简写方式,本行了简写还原和格式压缩。书中会恢复所有被简写的代码段落的大括号“{}”,从而方便对源行分析,并且将只有一行代码的代码块压缩成单行,如下所示。 if (s == elementData.length) { elementData = grow(); } // 或者 if (s == elementData.length) { elementData = grow(); } 2)关于K版本的命名。 K 1.2~K 1.8都采用1.X格式的小版本号,但是在K 1.8后,Oracle改为采用大版本号对行命名,如K 9、K 11等。本书也会采用这种命名方式,但是由于各个版能存在差异,因此为了表达从某个K版本开始支持某能或特,本书会采用“ ”符号表示。例如,如果要表达从K 1.8开始支持某种特,则用K 1.8 表示;如果要表达从K 11开始支持某种特,则用K 11 表示。 3)其他约定。 ? 关于JVM的称呼约定。 本书无意深入分析JVM的内部运行原理,也不会深入讨论JVM每个模块负责的具体工作。例如,本书不会分析JIT(即时编译器)指令重排的细节,以及在什么况下代码指令不会被编译执行,而会被解释执行。凡是涉及内部运行原理的内容,本书将其统称为JVM运行过程。此外,如果没有说明,那么本书提到的JVM都表示HotSpot版本的虚拟机。 ? 关于方法的称呼约定。 由于Java中的方法涉及多态场景,因此本书需要保证对Java中方法的称呼不出现二义。例如,java.lang.Object类中的wt()方法存在多态表达,代码如下。 wt() throws InterruptedException wt(long timeoutMillis) throws InterruptedException wt(long timeoutMillis, int nanos) throws InterruptedException 在不产生二义的况下,本书会直接采用“wt()方法”的描述方式。如果需要介绍多态场景中方法名相同、入参不同的方法表达的不同工作特,那么不加区别会造成二义,这时本书会采用“wt()”“wt(long)”分行特定描述。 ? 关于图表的约定。 本书主要采用图文方式对Java源行说明、分析结,由于客观限制,大量的插图只能采用黑白方式呈现,因此如果有需要,则会在插图后的正文中或插图右上角给出图例说明。 ? 关于System.out对象的使用。 在实际工使用slf4j-log4j方行日志/控制台输出,但本书中的代码片段大量使用System.out对行控制台输出,这并不影响读者理解这些代码片段的逻辑,也有利于不同知识水平的读者将精力集中在理解核心思路上。 ? 关简写的约定。 本书大部分内容涉及Java集合框架(JCF)和Java并发工(JUC),JCF和JUC通常涉及较长路径。例如,在JUC中,封装后终向程序员开放的原子操作工具类位于java.util.concurrent.atomi下。如果本书中每一个类的全称都携带这么长路径,那么显然是没必要的。为了节约篇幅,本书会使路径下每个路径点的首字母路行简写,如将“java.util.concurrent.atomic简写为j.u.c.atomi。 ? 关于集合、集合对象、队列的约定。 读者应该都已知晓,对象是类的实例。本书将JCF中的具体类称为集合,将JCF中类的实例对象称为集合对象。队列是一种具有作效果的集合,从继承结构上来说,本书会将JCF中实现了java.util.Queue接口的集合称为队列。这主要是为了表述方便,并不代表笔者认为集合、集合对象和队列在JVM工作原理层面上有任何差异。 3.必要的前置知识 本书难度适中,但仍然需要读者对Java编程语言具备基本认知,这样才能通畅地阅读本书所有内容。这种基本认知与工作年限没有关系,属于只要是Java程序员应该掌握的知识。 1)关于位运算的知识。 Java支持基于制的位运算操作。在Java中,使用“>>”表示无符号位的右移运算,使用“>>>”表示有符号位的右移运算,使用“

      配送说明

      ...

      相似商品

      为你推荐

    本店分类
    孔网啦啦啦啦啦纺织女工火锅店第三课

    开播时间:09月02日 10:30

    即将开播,去预约
    直播中,去观看