《实战java高并发程序设计》源码整理及读书笔记
作者:13
GitHub:https://github.com/ZHENFENG13
版权声明:本文为原创文章,未经允许不得转载。
前言
不要被标题吓到,虽然书籍是《实战java高并发程序设计》,不过本文只是写一写本人的一点读书感受,顺便整理了一下书中的代码,其实我原本是不想敲代码的,不过去网络上搜了一圈之后,发现根本没有现成的,只能自己敲了,既然整理好了一部分代码,索性就上传到GitHub上,让大家都看一看,节省一下其他人的时间,GitHub地址在这里,无法访问的话,也可以到码云的仓库中看,地址是点这里,给项目个star吧。
书籍简介

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

2017年4月10号开始读,到30号读完,中间的二十天基本都是抽出中午的一小段时间看书,每天虽然看的不多,但是加在一起就不一样了,事情总会做完的,让我想起高中时物理老师的一句话:
“小步走,不停步,等于前进一大步”
虽然分开来看量很小,但是慢慢积累下来,概念就不同了。
整本书看下来感觉还不错,案例的数量很大、质量也很高,动手实践一下得到了不小的收获,也达到了买书前的预期,理论知识不是特别的晦涩难懂、代码也很清晰,对这本书的好评是远远多于差评的,知识点丰富、学到了想要学的知识点。
读书笔记
书中就是知识点的介绍,还有一些代码案例,作者讲解的也挺详细的,这篇文章里就不会讲了,都是些概念性的知识。
书是好书,案例也是好案例,个人看来,这本书也是有缺点,当然,这个只是个人看法,对这本书最大的槽点应该就是插图了:


书中的插图基本都是这个风格,而且由于印刷原因有些插图有些不清楚,因此最大的槽点是这个。
- 第一次啃书的过程中,并没有特别跟着作者的思路去敲代码案例,只是用笔在书本里做了一些注释,因为我觉得网上应该会有相关的源码资源,结果是我找了挺久没找到,因此就自己动手写了一遍,我觉得应该也有人和我一样懒得去敲一遍代码,所以就打算公布在网上了。
- 代码里都是两个线程,下载了源码后,可以自行在编辑器里模拟多个线程的运行情况。
- 对线程和高并发的认识有所加深,这次写文章、整理源码的过程中又读了一遍全书,感觉收获颇丰,印象更加深刻了,可能过一段时间又忘了,谁知道呢。
看第一遍的时候,其实有过思想准备,也对自己说过,如果书本中理论感太强,就慢慢看,一天翻个几页,如果代码案例多的话,就多敲敲代码。看了之后发现,有些章节确实比较偏理论,不过耐下心来也是能看得下去,每天中抽些时间翻个几页,慢慢的也就看完了,至于敲代码这件事就没去做,因为我觉得网上应该会有相关的资源的,哪知道,一条都没。
印象比较深的几个知识点是指令重排、比较交换CAS、ThreadLocal、读写锁优化,在这里提一下,详细的我就不写了,想了解的朋友自行搜索,这些知识点书里都做了详细的介绍,会让你收获满满的。
读书心得
不知道大家有没有这种感觉,对多线程、锁这种知识点“又爱又恨”,感觉很近又感觉很远,想去认真探索一个究竟,但是终究没能迈出第一步,或者迈出第一步也不想继续前进了,觉得这些知识点特别难搞。
对线程这一块儿的知识比较模糊,初学Java的时候,也没有特别着重的去看,觉得有些晦涩难懂,后来工作了,也没有接触过类似的编码要求,因此造成了一个思维怪圈,对之莫名的好奇,又无法完全说服自己去认真的学习它并对之有一个透彻的理解,平时工作中确实用的不多,而且试着学过,又觉得过程比较枯燥,但是也的的确确知道这个知识点的重要性,也知道一些框架或者工具底层肯定是用到了这些知识点的,只不过是自己没有动手写过相关代码罢了。
其实看这本书,也是因为猎奇心理吧,不想总是对一个知识点有小小的恐惧,我感觉我还是掌握它比较好,如果是一年前,这本书我可能也看不下去,因为那个时候的我还没养成看书的习惯,一开始学知识都是去百度搜,去看博客等,而且很少主动的学习,更别提去看书了,慢慢的就发现这种碎片式的知识学习方式并没有彻底解决技能掌握度低的问题,而且知识点太碎了,无法连贯起来形成自己的知识系统,技能栈不全面,所以从去年开始,开始主动买技术书籍以及技能相关的书籍来看,也慢慢的由一点也看不下去,到强迫自己看一点,再到每天能看几页,最后能坚持看完一本,接着是第二本、第三本....
因为想看书了,而且也慢慢的养成了看书的习惯了,因此啃完这本书也就很轻松了,后来因为整理书中的源码又看了一遍,就算是加深印象了吧。
结语
这篇文章主要是讲一下自己的体会,其实都是一些牢骚话,关键的是书中的源码,因为网上确实没有这本书的相关文档,因此就自己整理了一下,如果有同样在看这本书的朋友,不太想自己一点点敲书上的代码的话,可以直接到我的github仓库中去下载代码。
其实我就是不想敲代码,哈哈哈哈,去网络上搜了一圈之后,发现根本没有现成的,只能自己敲了,既然整理好了一部分代码,索性就上传到GitHub上,让大家都看一看,节省一下其他人的时间,GitHub地址在这里,无法访问的话,也可以到码云的仓库中看,地址是点这里,给项目个star吧。
推荐一下自己的达人课,感兴趣的朋友可以看一下:SSM搭建精美实用的管理系统

《实战java高并发程序设计》源码整理及读书笔记的更多相关文章
- 《实战Java高并发程序设计》读书笔记
文章目录 第二章 Java并行程序基础 2.1 线程的基本操作 2.1.1 线程中断 2.1.2 等待(wait)和通知(notify) 2.1.3 等待线程结束(join)和谦让(yield) 2. ...
- 【实战Java高并发程序设计 7】让线程之间互相帮助--SynchronousQueue的实现
[实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...
- 【实战Java高并发程序设计6】挑战无锁算法:无锁的Vector实现
[实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...
- 【实战Java高并发程序设计 5】让普通变量也享受原子操作
[实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...
- 【实战Java高并发程序设计 4】数组也能无锁:AtomicIntegerArray
除了提供基本数据类型外,JDK还为我们准备了数组等复合结构.当前可用的原子数组有:AtomicIntegerArray.AtomicLongArray和AtomicReferenceArray,分别表 ...
- 【实战Java高并发程序设计 3】带有时间戳的对象引用:AtomicStampedReference
[实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference AtomicReference无法解决上述问题的根 ...
- 【实战Java高并发程序设计 1】Java中的指针:Unsafe类
是<实战Java高并发程序设计>第4章的几点. 如果你对技术有着不折不挠的追求,应该还会特别在意incrementAndGet() 方法中compareAndSet()的实现.现在,就让我 ...
- 《实战Java高并发程序设计》读书笔记三
第三章 JDK并发包 1.同步控制 重入锁:重入锁使用java.util.concurrent.locks.ReentrantLock类来实现,这种锁可以反复使用所以叫重入锁. 重入锁和synchro ...
- 《实战Java高并发程序设计》读书笔记六
第六章 Java 8 与并发 1.函数式编程 函数作为一等公民: 将函数作为参数传递给另外一个函数这是函数式编程的特性之一. 函数可以作为另外一个函数的返回值,也是函数式编程的重要特点. 无副作用: ...
随机推荐
- 关于C++中的前置声明(附程序运行图)
实验于华中农业大学逸夫楼2017.3.10 在编写C++程序的时候,偶尔需要用到前置声明(Forward declaration).下面的程序中,带注释的那行就是类B的前置说明.这是必须的,因为类A中 ...
- --save 和 --save-dev的区别
--save是对生产环境所需依赖的声明(开发应用中使用的框架,库,比如jquery,bootstrap等) --save-dev是对开发环境所需依赖的声明(构建工具,测试工具,比如babel,gulp ...
- Python 安装虚拟环境
写在前面: 安装指南是在 Ubuntu 下面操作的.不同的 Linux 版本,安装指令不同.所以,该指南的某些指令对于像 CentOS 等非 Ubuntu 系统不适用. 为什么需要使用虚拟环境? 虚拟 ...
- Apriori算法(C#)
AprioriMethod.cs using System; using System.Collections.Generic; using System.Linq; using System.Web ...
- lua table表
lua table表 语法结构 创建一个 table 直接使用 "{}" 即可 table1 = {} -- 赋值 table1["name"] = " ...
- 【小瑕疵】在div里插入img后在底部留有缝隙怎么解决
[本文转载自http://blog.sina.com.cn/s/blog_9fd5b6df01013mld.html] 图片IMG与容器下边界之间有空隙怎么办?这里介绍3中简单的解决方法. 第一,给图 ...
- IIS环境下部署项目
1.环境部署 1.1安装IIS7 进入控制面板,选择"程序和功能",进入如下页面后,点击"Turn Windows features on or off". 找 ...
- C语言之函数和字符串
二.函数: 2.1.函数的执行: 1.当我们每次进入一个函数的时候,原函数的栈底进行一个备份,之后将当前函数的栈底和栈顶指针分作同一个. 2.此时我们就可以说产生了一个新栈,产生新栈之后会在新栈中申请 ...
- servlet研究学习总结--OutputStream和PrintWriter的区别
当用户和浏览器其进行交互时,会给服务器发送http请求,Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象.requ ...
- 安装hexo报错(npm WARN deprecated swig@1.4.2: This package is no longer maintained),已解决
问题:在使用npm安装hexo时报错 $ npm install -g hexo npm WARN deprecated swig@1.4.2: This package is no longer m ...