當前位置:
首頁 > 知識 > 《實戰java高並發程序設計》源碼整理及讀書筆記

《實戰java高並發程序設計》源碼整理及讀書筆記


日常啰嗦

不要被標題嚇到,雖然書籍是《實戰java高並發程序設計》,但是這篇文章不會講高並發、線程安全、鎖啊這些比較惱人的知識點,甚至都不會談相關的技術,只是寫一寫本人的一點讀書感受,順便整理了一下書中的代碼,放到github里了。


書籍簡介

《實戰java高並發程序設計》源碼整理及讀書筆記

當時在京東選書的時候就是被這本書的封面給吸引了,莫名的挺喜歡這本書,剛好那段時間也想補充一下這方面的知識點,看了一下書籍簡介就下單購買了。

《實戰java高並發程序設計》源碼整理及讀書筆記

2017年4月10號開始讀,到30號讀完,中間的二十天基本都是抽出中午的一小段時間看書,每天雖然看的不多,但是加在一起就不一樣了,事情總會做完的,讓我想起高中時物理老師的一句話:


「小步走,不停步,等於前進一大步」

雖然分開來看量很小,但是慢慢積累下來,概念就不同了。

整本書看下來感覺還不錯,案例的數量很大、質量也很高,動手實踐一下得到了不小的收穫,也達到了買書前的預期,理論知識不是特別的晦澀難懂、代碼也很清晰,對這本書的好評是遠遠多於差評的,知識點豐富、學到了想要學的知識點。

下面是書籍的部分目錄,不想看可以跳過去:

第1章 走入並行世界 1

讀書筆記

書中就是知識點的介紹,還有一些代碼案例,作者講解的也挺詳細的,這篇文章里就不會講了,都是些概念性的知識。

書是好書,案例也是好案例,個人看來,這本書也是有缺點,當然,這個只是個人看法,對這本書最大的槽點應該就是插圖了:

《實戰java高並發程序設計》源碼整理及讀書筆記

《實戰java高並發程序設計》源碼整理及讀書筆記

書中的插圖基本都是這個風格,而且由於印刷原因有些插圖有些不清楚,因此最大的槽點是這個。

  • 第一次啃書的過程中,並沒有特別跟著作者的思路去敲代碼案例,只是用筆在書本里做了一些注釋,因為我覺得網上應該會有相關的源碼資源,結果是我找了挺久沒找到,因此就自己動手寫了一遍,我覺得應該也有人和我一樣懶得去敲一遍代碼,所以就打算公布在網上了。

  • 代碼里都是兩個線程,下載了源碼後,可以自行在編輯器里模擬多個線程的運行情況。

  • 對線程和高並發的認識有所加深,這次寫文章、整理源碼的過程中又讀了一遍全書,感覺收穫頗豐,印象更加深刻了,可能過一段時間又忘了,誰知道呢。

看第一遍的時候,其實有過思想準備,也對自己說過,如果書本中理論感太強,就慢慢看,一天翻個幾頁,如果代碼案例多的話,就多敲敲代碼。看了之後發現,有些章節確實比較偏理論,不過耐下心來也是能看得下去,每天中抽些時間翻個幾頁,慢慢的也就看完了,至於敲代碼這件事就沒去做,因為我覺得網上應該會有相關的資源的,哪知道,一條都沒。

印象比較深的幾個知識點是指令重排、比較交換CAS、ThreadLocal、讀寫鎖優化,在這裡提一下,詳細的我就不寫了,想了解的朋友自行搜索,這些知識點書里都做了詳細的介紹,會讓你收穫滿滿的。


讀書心得

不知道大家有沒有這種感覺,對多線程、鎖這種知識點「又愛又恨」,感覺很近又感覺很遠,想去認真探索一個究竟,但是終究沒能邁出第一步,或者邁出第一步也不想繼續前進了,覺得這些知識點特別難搞。

對線程這一塊兒的知識比較模糊,初學Java的時候,也沒有特別著重的去看,覺得有些晦澀難懂,後來工作了,也沒有接觸過類似的編碼要求,因此造成了一個思維怪圈,對之莫名的好奇,又無法完全說服自己去認真的學習它並對之有一個透徹的理解,平時工作中確實用的不多,而且試著學過,又覺得過程比較枯燥,但是也的的確確知道這個知識點的重要性,也知道一些框架或者工具底層肯定是用到了這些知識點的,只不過是自己沒有動手寫過相關代碼罷了。

其實看這本書,也是因為獵奇心理吧,不想總是對一個知識點有小小的恐懼,我感覺我還是掌握它比較好,如果是一年前,這本書我可能也看不下去,因為那個時候的我還沒養成看書的習慣,一開始學知識都是去百度搜,去看博客等,而且很少主動的學習,更別提去看書了,慢慢的就發現這種碎片式的知識學習方式並沒有徹底解決技能掌握度低的問題,而且知識點太碎了,無法連貫起來形成自己的知識系統,技能棧不全面,所以從去年開始,開始主動買技術書籍以及技能相關的書籍來看,也慢慢的由一點也看不下去,到強迫自己看一點,再到每天能看幾頁,最後能堅持看完一本,接著是第二本、第三本....

因為想看書了,而且也慢慢的養成了看書的習慣了,因此啃完這本書也就很輕鬆了,後來因為整理書中的源碼又看了一遍,就算是加深印象了吧。


結語

這篇文章主要是講一下自己的體會,其實都是一些牢騷話,關鍵的是書中的源碼,因為網上確實沒有這本書的相關文檔,因此就自己整理了一下,如果有同樣在看這本書的朋友,不太想自己一點點敲書上的代碼的話,可以直接到我的github倉庫中去下載代碼。

其實我就是不想敲代碼,哈哈哈哈,去網路上搜了一圈之後,發現根本沒有現成的,只能自己敲了,既然整理好了一部分代碼,索性就上傳到github上,讓大家都看一看,節省一下其他人的時間,github地址是點這裡,如果沒法FQ的話,可以到碼雲的倉庫中看,地址是點這裡,如果覺得還可以的話,幫忙點個star吧。

我曾七次鄙視自己的靈魂, 第一次,當它本可進取時,卻故作謙卑; 第二次,當它空虛時,用愛欲來填充; 第三次,在困難和容易之間,它選擇了容易; 第四次,它犯了錯,卻藉由別人也會犯錯來寬慰自己; 第五次,它自由軟弱,卻把它認為是生命的堅韌; 第六次,當它鄙夷一張醜惡的嘴臉時,卻不知那正是自己面具中的一副; 第七次,它側身於生活的污泥中雖不甘心,卻又畏首畏尾。


學習Java的同學注意了!!!

學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Java學習交流群495273252,我們一起學Java!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java團長 的精彩文章:

JavaSE的自動裝箱和自動拆箱
程序員如何選擇未來的職業路線
Java中String通過引用傳遞問題詳細解析
Java面向對象總結
深入理解Java常用類——時間日期

TAG:Java團長 |

您可能感興趣

RocketMQ源碼:通信協議設計及編解碼
如何閱讀Android項目的源碼,快速梳理程序主線
查看Linux內核源碼技巧的記錄
Prometheus原理和源碼分析
Apache Storm流計算模型 及WordCount源碼實踐
視頻、書籍、源碼、項目,Tensorflow 純乾貨學習資源匯總
Spring源碼解析——Spring思想、設計模式總結
PyalgoTrade源碼閱讀完結篇
dubbo源碼分析之服務治理
RocketMQ 源碼學習 1 : 整體結構
android 結合源碼深入剖析AsyncTask機制原理
log4j源碼粗讀
mybatis的擴展實現源碼解讀
Rocketmq之消息隊列分配策略演算法實現的源碼分析
hash map源碼剖析
AutoLine源碼分析之調度管理器
設計模式之觀察者模式源碼分析及實踐
基於Redis實現分散式鎖-Redisson使用及源碼分析
FutureTask 在線程池中應用和源碼解析
「快速入門」MyBatis Generator源碼分析修改和自定義插件