《实战java高并发程序设计》源码整理及读书笔记

时间:2022-10-16 11:51:39

作者:13

GitHub:https://github.com/ZHENFENG13

版权声明:本文为原创文章,未经允许不得转载。

前言

不要被标题吓到,虽然书籍是《实战java高并发程序设计》,不过本文只是写一写本人的一点读书感受,顺便整理了一下书中的代码,其实我原本是不想敲代码的,不过去网络上搜了一圈之后,发现根本没有现成的,只能自己敲了,既然整理好了一部分代码,索性就上传到GitHub上,让大家都看一看,节省一下其他人的时间,GitHub地址在这里,无法访问的话,也可以到码云的仓库中看,地址是点这里,给项目个star吧。

书籍简介

《实战java高并发程序设计》源码整理及读书笔记

当时在京东选书的时候就是被这本书的封面给吸引了,莫名的挺喜欢这本书,刚好那段时间也想补充一下这方面的知识点,看了一下书籍简介就下单购买了。

《实战java高并发程序设计》源码整理及读书笔记

2017年4月10号开始读,到30号读完,中间的二十天基本都是抽出中午的一小段时间看书,每天虽然看的不多,但是加在一起就不一样了,事情总会做完的,让我想起高中时物理老师的一句话:

“小步走,不停步,等于前进一大步”

虽然分开来看量很小,但是慢慢积累下来,概念就不同了。

整本书看下来感觉还不错,案例的数量很大、质量也很高,动手实践一下得到了不小的收获,也达到了买书前的预期,理论知识不是特别的晦涩难懂、代码也很清晰,对这本书的好评是远远多于差评的,知识点丰富、学到了想要学的知识点。

读书笔记

书中就是知识点的介绍,还有一些代码案例,作者讲解的也挺详细的,这篇文章里就不会讲了,都是些概念性的知识。

书是好书,案例也是好案例,个人看来,这本书也是有缺点,当然,这个只是个人看法,对这本书最大的槽点应该就是插图了:

《实战java高并发程序设计》源码整理及读书笔记

《实战java高并发程序设计》源码整理及读书笔记

书中的插图基本都是这个风格,而且由于印刷原因有些插图有些不清楚,因此最大的槽点是这个。

  • 第一次啃书的过程中,并没有特别跟着作者的思路去敲代码案例,只是用笔在书本里做了一些注释,因为我觉得网上应该会有相关的源码资源,结果是我找了挺久没找到,因此就自己动手写了一遍,我觉得应该也有人和我一样懒得去敲一遍代码,所以就打算公布在网上了。
  • 代码里都是两个线程,下载了源码后,可以自行在编辑器里模拟多个线程的运行情况。
  • 对线程和高并发的认识有所加深,这次写文章、整理源码的过程中又读了一遍全书,感觉收获颇丰,印象更加深刻了,可能过一段时间又忘了,谁知道呢。

看第一遍的时候,其实有过思想准备,也对自己说过,如果书本中理论感太强,就慢慢看,一天翻个几页,如果代码案例多的话,就多敲敲代码。看了之后发现,有些章节确实比较偏理论,不过耐下心来也是能看得下去,每天中抽些时间翻个几页,慢慢的也就看完了,至于敲代码这件事就没去做,因为我觉得网上应该会有相关的资源的,哪知道,一条都没。

印象比较深的几个知识点是指令重排、比较交换CAS、ThreadLocal、读写锁优化,在这里提一下,详细的我就不写了,想了解的朋友自行搜索,这些知识点书里都做了详细的介绍,会让你收获满满的。

读书心得

不知道大家有没有这种感觉,对多线程、锁这种知识点“又爱又恨”,感觉很近又感觉很远,想去认真探索一个究竟,但是终究没能迈出第一步,或者迈出第一步也不想继续前进了,觉得这些知识点特别难搞。

对线程这一块儿的知识比较模糊,初学Java的时候,也没有特别着重的去看,觉得有些晦涩难懂,后来工作了,也没有接触过类似的编码要求,因此造成了一个思维怪圈,对之莫名的好奇,又无法完全说服自己去认真的学习它并对之有一个透彻的理解,平时工作中确实用的不多,而且试着学过,又觉得过程比较枯燥,但是也的的确确知道这个知识点的重要性,也知道一些框架或者工具底层肯定是用到了这些知识点的,只不过是自己没有动手写过相关代码罢了。

其实看这本书,也是因为猎奇心理吧,不想总是对一个知识点有小小的恐惧,我感觉我还是掌握它比较好,如果是一年前,这本书我可能也看不下去,因为那个时候的我还没养成看书的习惯,一开始学知识都是去百度搜,去看博客等,而且很少主动的学习,更别提去看书了,慢慢的就发现这种碎片式的知识学习方式并没有彻底解决技能掌握度低的问题,而且知识点太碎了,无法连贯起来形成自己的知识系统,技能栈不全面,所以从去年开始,开始主动买技术书籍以及技能相关的书籍来看,也慢慢的由一点也看不下去,到强迫自己看一点,再到每天能看几页,最后能坚持看完一本,接着是第二本、第三本....

因为想看书了,而且也慢慢的养成了看书的习惯了,因此啃完这本书也就很轻松了,后来因为整理书中的源码又看了一遍,就算是加深印象了吧。

结语

这篇文章主要是讲一下自己的体会,其实都是一些牢骚话,关键的是书中的源码,因为网上确实没有这本书的相关文档,因此就自己整理了一下,如果有同样在看这本书的朋友,不太想自己一点点敲书上的代码的话,可以直接到我的github仓库中去下载代码。

其实我就是不想敲代码,哈哈哈哈,去网络上搜了一圈之后,发现根本没有现成的,只能自己敲了,既然整理好了一部分代码,索性就上传到GitHub上,让大家都看一看,节省一下其他人的时间,GitHub地址在这里,无法访问的话,也可以到码云的仓库中看,地址是点这里,给项目个star吧。

推荐一下自己的达人课,感兴趣的朋友可以看一下:SSM搭建精美实用的管理系统

《实战java高并发程序设计》源码整理及读书笔记

《实战java高并发程序设计》源码整理及读书笔记的更多相关文章

  1. 《实战Java高并发程序设计》读书笔记

    文章目录 第二章 Java并行程序基础 2.1 线程的基本操作 2.1.1 线程中断 2.1.2 等待(wait)和通知(notify) 2.1.3 等待线程结束(join)和谦让(yield) 2. ...

  2. 【实战Java高并发程序设计 7】让线程之间互相帮助--SynchronousQueue的实现

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...

  3. 【实战Java高并发程序设计6】挑战无锁算法:无锁的Vector实现

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...

  4. 【实战Java高并发程序设计 5】让普通变量也享受原子操作

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...

  5. 【实战Java高并发程序设计 4】数组也能无锁:AtomicIntegerArray

    除了提供基本数据类型外,JDK还为我们准备了数组等复合结构.当前可用的原子数组有:AtomicIntegerArray.AtomicLongArray和AtomicReferenceArray,分别表 ...

  6. 【实战Java高并发程序设计 3】带有时间戳的对象引用:AtomicStampedReference

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference AtomicReference无法解决上述问题的根 ...

  7. 【实战Java高并发程序设计 1】Java中的指针:Unsafe类

    是<实战Java高并发程序设计>第4章的几点. 如果你对技术有着不折不挠的追求,应该还会特别在意incrementAndGet() 方法中compareAndSet()的实现.现在,就让我 ...

  8. 《实战Java高并发程序设计》读书笔记三

    第三章 JDK并发包 1.同步控制 重入锁:重入锁使用java.util.concurrent.locks.ReentrantLock类来实现,这种锁可以反复使用所以叫重入锁. 重入锁和synchro ...

  9. 《实战Java高并发程序设计》读书笔记六

    第六章 Java 8 与并发 1.函数式编程 函数作为一等公民: 将函数作为参数传递给另外一个函数这是函数式编程的特性之一. 函数可以作为另外一个函数的返回值,也是函数式编程的重要特点. 无副作用: ...

随机推荐

  1. Android轻量缓存框架--ASimpleCache

    [转] 大神真面目 稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! ...

  2. memcpy、memmove、memset及strcpy函数实现和理解

    memcpy.memmove.memset及strcpy函数实现和理解 关于memcpy memcpy是C和C++ 中的内存拷贝函数,在C中所需的头文件是#include<string.h&gt ...

  3. chrome&colon;&sol;&sol; 的秘密!!一些有用的命令!

    chrome:// .......命令 集结 Chrome 有很多的特性在界面菜单中是没有体现的,可以通过 chrome:// 命令来访问 我搜集了下面这些!!!当然也是在网上找的!有的我自己也不知道 ...

  4. ANdrod Studio查看Sha1的方法

    在用Studio做开发中,有时候根据业务需求,需要集成一些SDk,举个例子,百度的鹰眼定位,当然还有很多,在创建项目的时候需要输入sha1值,这个sha1值的获取有多种方式,我记得百度有个检测,就可以 ...

  5. ios 继承关系图

  6. Linux开机时停在 Starting sendmail 不动了的解决方案

    目前遇到这个问题,是在修改了/etc/hosts之后,但停止在Starting sendmail后5分钟就进去了.以后再长时间进入不了系统,可以参考下面的方法. 造成这个问题一般是因为用户修改了机器名 ...

  7. 向Github提交代码时遇到的一些问题

    今天分享一下我的一些小经验,那就是向github提交我们的代码.之前一直是直接使用的浏览器完成的代码的下载任务,没有使用过客户端,为了让自己在工作之前熟练使用GitHub,所以就有了下面的这篇博文了. ...

  8. Android 解析标准的点击第三方文件管理器中的视频的intent

    解析标准的第三方视频intent private List<String> mCurPlayList = new ArrayList<String>(); private in ...

  9. 第九节:从源码的角度分析MVC中的一些特性及其用法

    一. 前世今生 乍眼一看,该标题写的有点煽情,最近也是在不断反思,怎么能把博客写好,让人能读下去,通俗易懂,深入浅出. 接下来几个章节都是围绕框架本身提供特性展开,有MVC程序集提供的,也有其它程序集 ...

  10. facebook api之Access Tokens之Business Manager System User

    Business Manager System User Make programatic, automated actions on ad objects or Pages, or do progr ...