久久久久综合给合狠狠狠,人人干人人模,大陆一级黄色毛片免费在线观看,亚洲人人视频,欧美在线观看一区二区,国产成人啪精品午夜在线观看,午夜免费体验

薈聚奇文、博采眾長、見賢思齊
當前位置:公文素材庫 > 公文素材 > 范文素材 > Java并發(fā)編程實踐:教你輕松學習Java多線程

Java并發(fā)編程實踐:教你輕松學習Java多線程

網(wǎng)站:公文素材庫 | 時間:2019-05-15 09:39:49 | 移動端:Java并發(fā)編程實踐:教你輕松學習Java多線程

Java多線程是一部比較難學難懂的書籍,但是學會了對我們學計算機的來說用處很大的,小編整理了一篇Java并發(fā)編程實踐:教你輕松學習Java多線程供大家欣賞!

最近一段時間,我對《Java并發(fā)編程實踐》這本經(jīng)典而又有些難懂的書籍,嘗試用了一些簡單有趣、通俗易懂的方式進行解讀,現(xiàn)整理成GitBook(文末有鏈接),方便大家閱讀。

為什么要解讀這本書

因為這是一本經(jīng)典卻又難懂的書。

這本書的經(jīng)典我想不必多講了,幾乎所有想學習Java并發(fā)的同學,都會被推薦去看這本書(雖然他們中的大多數(shù)在看了不到三分之一之后就放棄了),作為一本書籍,最重要的是系統(tǒng)性和準確性,這本書涵蓋了Java并發(fā)中幾乎所有基礎(chǔ)知識點,并且大

多數(shù)章節(jié)都配有實際案例,是一本非常值得收藏的Java并發(fā)參考手冊。

那么為什么說這本書難懂呢?

總的來說有以下幾點:

理論過多。舉個例子,書中第五章,在講Java并發(fā)的一些基礎(chǔ)構(gòu)建模塊時(ConcurrentHashMap、CopyOnWriteArrayList、Future這些),前面用了很多篇幅講這些類的理論知識,到章節(jié)最后才用一個實際案例將這些知識串起來,而很多讀者在看前

面那些枯燥乏味的理論性講解時,就已經(jīng)消耗了太多意志力,導致最后根本沒精力看最后的案例;

有點跳躍。書中對一些知識點的講解,并沒有完全講透,有些只是一筆帶過,讀者看到難免就會心里好多個疑問,然后就試圖通過上下文去理解作者的意思,最后又消耗了大量意志力,導致最終的棄讀;

中文翻譯別扭。這是很多經(jīng)典技術(shù)書籍的通病了,本身這本書就很難懂,翻譯的別扭,就更難懂了。

針對上面這些問題,我采用了以下方式進行解讀:

用講故事的方式進行講解。讓文章兼具知識性和娛樂性,讓讀者閱讀時不會感到枯燥;

先案例后理論。我把書中放在章節(jié)最后的案例,挪到了文章的開頭,讓讀者先對知識有了大概的了解,同時引發(fā)讀者的好奇心,在看文章后面的偏理論解讀的時候,不會昏昏欲睡;

不局限于書籍本身。和大多數(shù)讀者一樣,我在看這本書的時候,也經(jīng)常會卡殼,然后翻尋上下文,依舊百思不得其解。這時候就需要用到搜索引擎了,所以你經(jīng)常會在我的文章末尾看到除了《Java并發(fā)編程實踐》以外的其他參考文獻;

必要時看原著。上面說了,有些段落的中文翻譯實在看著別扭,這時候就需要看回原著,看看作者自己是如何表述的。

解讀脈絡(luò)

我這次解讀的內(nèi)容,也許只包含了Java并發(fā)中20%的知識,但這20%的知識,已經(jīng)足以涵蓋平時80%的使用場景。下面簡單梳理一下這份解讀的脈絡(luò)。

1、為什么要使用線程池 

首先,你學習Java多線程,得知道為什么要使用多線程吧?干嘛不老老實實使用單線程呢?這部分比較簡單,書里講的也很清楚,網(wǎng)上一搜資料也一大把,所以這部分不作解讀 ( ̄ ̄)~

2、如何寫出線程不安全的代碼 

好,現(xiàn)在你知道為什么要學Java多線程了。

那么當我們談學習多線程時,我們是在談學習什么呢?談如何創(chuàng)建線程嗎?不是,多線程里的大多數(shù)知識,都是在講如何在多線程的環(huán)境下,保證代碼的線程安全性,所以,接下來,你要了解,如何寫出線程不安全的代碼,知道什么樣的代碼是線程不安

全的,你才會去想如何才能讓它線程安全。

3、兩個最基礎(chǔ)的關(guān)鍵字 

現(xiàn)在你寫出了線程不安全的代碼,是時候想想要怎樣把它們變成線程安全的了。

在Java中,實現(xiàn)線程安全,最最基礎(chǔ)的就是兩個關(guān)鍵字,volatile和synchronize。

volatile用的比較少,但是通過對它的學習,你可以了解Java內(nèi)存模型,學會透過JVM去看線程問題,這是一個思考范式的提升: Volatile趣談——我是怎么把貝克漢姆的進球弄丟的 

synchronize,無需多言,不管是我們自己寫的代碼,還是JDK里的各個線程安全類,如ConcurrentHashMap,HashTable,大多都是利用synchronize來實現(xiàn)的線程安全:如何用一句話介紹synchronize的內(nèi)涵

4、學會委托 

學會了volatile和synchronize,以后就可以靠著兩兄弟打遍天下無敵手了?

理論上可行,不過就像那句話說的,拿著錘子的人,看誰都是釘子。要想建一棟大樓,我們不能只有錘子,我們還需要起重機。Java就給了我們很多牛哄哄的起重機,比如ConcurrentHashMap,想想看,每次你想讓你的Map線程安全,都要自己手動加上

synchronize,這多麻煩,有了ConcurrentHashMap,我們只要把線程安全的重任,委托給它去實現(xiàn)就ok了。

Java中可以被委托的類還有很多,大體上分為三類,同步容器、并發(fā)容器和同步工具類,我的解讀,也是通過一個簡單的緩存案例,展示了如何把一個原本線程不安全的代碼,通過synchronize改為線程安全,再通過委托,強化為性能更猛的緩存器:

Java趣談——如何構(gòu)建一個高效且可伸縮的緩存

5、學點內(nèi)功——線程池 

現(xiàn)在你已經(jīng)掌握了極強的外功了,十八般武藝樣樣精通,可以去武林大會挑戰(zhàn)武林盟主了嗎?還不行,光有極強的外功,卻沒有與之匹配的內(nèi)功,只會讓你走火入魔。

Java多線程也是如此,上面講的都是外功,教你如何使用各種工具實現(xiàn)線程安全,但是想想看,實際項目中,你真的可以每個任務(wù)過來都給它創(chuàng)建一條線程嗎?肯定不行嘛,內(nèi)存會撐爆的!所以,你還需要掌握一項管控線程數(shù)量的技術(shù)——線程池,我將

通過一個Web服務(wù)器的案例,給你展示為什么要使用線程池以及如何將無線程數(shù)量管控的代碼改為由線程池管控的代碼:Java趣談——如何像Tomcat一樣處理請求 

另外,我還將從Java并發(fā)大師Doug Lea的視角,帶你了解Java線程池背后的原理:Java線程池是如何誕生的?

6、學點設(shè)計——并發(fā)方案 

學會了外功,又掌握了內(nèi)功,可以上江湖闖蕩了嗎?等等,還有一點,你要知道什么才是你應(yīng)該出手的時機,你總不能一上來就放大招殺敵一千自損四百吧。Java并發(fā)也是如此,你要知道,在什么情況下,應(yīng)該對任務(wù)進行并行化處理,以及哪種情況下并

行處理效果更好,我用了一個頁面渲染器的案例,給你展示了,如何對并發(fā)方案進行設(shè)計和優(yōu)化:Java趣談——如何寫出一個高效的頁面渲染器

以上就是我對《Java并發(fā)編程實踐》中,足以解決你80%的并發(fā)問題的20%知識的解讀,其他沒有解讀的包括:

如何取消和關(guān)閉線程

如何避免線程的活躍性風險

如何提升性能和可伸縮性

如何測試并發(fā)程序

顯示鎖及其原理

如何自定義同步工具

原子變量及其原理

非阻塞算法及其原理

難道這些知識不重要嗎?并不是,只是我還沒細看解讀不了罷了 (〃''〃)

那不掌握這些知識,可以出山了嗎?可以,只要你把《Java并發(fā)編程實踐》這本書放在桌子旁邊,知道有問題要去看哪部分就可以了,比如你寫了一個并發(fā)程序,想測試一下,卻不知道從何入手,翻開書,看索引,第12章,并發(fā)程序的測試,看,學,學

以致用,就ok了。

當然,我的解讀只是為了幫助大家更好的理解書中的將的知識,所以對于我解讀過的章節(jié),大家如果想深入學習,還是要翻開書,研究一番的,只不過在看了我的解讀之后,你理解起來會更輕松,學習起來會更有目的性,效率會更高。

來源:網(wǎng)絡(luò)整理 免責聲明:本文僅限學習分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。


Java并發(fā)編程實踐:教你輕松學習Java多線程》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請保留原作者信息,謝謝!
鏈接地址:http://www.weilaioem.com/gongwen/219545.html