1. 《java多線程編程核心技術》和《java並發編程的藝術》兩本書的異同
區別很大:
《java多線程編程核心技術》:
這本書讓你入個門,整體上了介紹一些並發編程的基本API、常見場景和一些坑,推薦先看這本書,比較簡單,適合新手,但是原理不夠深入
和《java並發編程的藝術》
這本書從底層和實現原理開始講起,深入java內存模型和處理器的知識講解並發編程的實現原理,適合有一定基礎的人看
2. 《Java並發編程實戰》pdf下載在線閱讀,求百度網盤雲資源
《Java並發編程實戰》(Brian Goetz)電子書網盤下載免費在線閱讀
鏈接:https://pan..com/s/1LkHQ1LOcgxHjCxplxfhmSg提取碼:1234
書名:Java並發編程實戰
作者:Brian Goetz
譯者:童雲蘭
豆瓣評分:9.0
出版社:機械工業出版社華章公司
出版年份:2012-2
頁數:293
內容簡介:
本書深入淺出地介紹了Java線程和並發,是一本完美的Java並發參考手冊。書中從並發性和線程安全性的基本概念出發,介紹了如何使用類庫提供的基本並發構建塊,用於避免並發危險、構造線程安全的類及驗證線程安全的規則,如何將小的線程安全類組合成更大的線程安全類,如何利用線程來提高並發應用程序的吞吐量,如何識別可並行執行的任務,如何提高單線程子系統的響應性,如何確保並發程序執行預期任務,如何提高並發代碼的性能和可伸縮性等內容,最後介紹了一些高級主題,如顯式鎖、原子變數、非阻塞演算法以及如何開發自定義的同步工具類。
本書適合Java程序開發人員閱讀。
作者簡介:
本書作者都是Java Community Process JSR 166專家組(並發工具)的主要成員,並在其他很多JCP專家組里任職。Brian Goetz有20多年的軟體咨詢行業經驗,並著有至少75篇關於Java開發的文章。Tim Peierls是「現代多處理器」的典範,他在BoxPop.biz、唱片藝術和戲劇表演方面也頗有研究。Joseph Bowbeer是一個Java ME專家,他對並發編程的興趣始於Apollo計算機時代。David Holmes是《The Java Programming Language》一書的合著者,任職於Sun公司。Joshua Bloch是Google公司的首席Java架構師,《Effective Java》一書的作者,並參與著作了《Java Puzzlers》。Doug Lea是《Concurrent Programming》一書的作者,紐約州立大學 Oswego分校的計算機科學教授。
3. JAVA並發編程實戰怎麼樣
我不想再繼續吐槽翻譯,的確有些話理解起來有些費勁,但就內容而言,這本書當吃無愧堪稱JAVA並發領域的一朵明珠,光芒萬丈的指引著並發這條路。(如果你有能力就讀英文版的,既然要吐槽中文版,還是就事論事的好) 前年的時候看過一邊,當時覺得讀這本書的時候用個新的成語來形容就是——不明覺厲。 近兩年各種並發開始流行,其實也流行了幾十年了,可以負責任的說網上你能看到的幾乎所有中文關於JAVA並發的理解和解讀幾乎都可以在這本書上找到。 個人感覺還是應該上來介紹JMM的,這樣至少能提起很大興趣。此書的翻譯堪稱晦澀難懂,如果不是硬著頭皮讀下來,嘗試去理解,這真不是水平的問題,真難以想像花了10幾個小時愣是把這本書再次讀完了。 其實這本書讀完後你最大的收獲應該是能夠去理解那些現今相當牛逼的JAVA領域的並發庫和框架了,當然你的收獲還有就是特別小心的使用鎖,發布可見性,活躍性,性能和測試等等。 這本書包含的內容涉及之廣、之深不能全部一下子消化完,例子非常具有代表性和針對性,值得你面對並發時再次讀讀這本書,如果接觸的不多或者只是剛剛了解並發,也非常適合你對整個JAVA世界的並發領域有個認識,重讀會有更進一步的理解,JAVA的並發真是令人瞠目結舌,無法形容,強大和靈活到一定地步了,當然這份強大是用龐大付出代價的。 個人感覺看完後,真是應該再把JDK里關於並發的庫仔細讀讀。 雖然這本書是在講JAVA的並發,但是如果有別的語言經驗的同學也應該推薦讀讀,讓你了解下JAVA世界的並發是如此的精彩和復雜詭異。 雖然不能完全記住書中的細節,但建好索引就足夠了,待日後用時可以再次翻閱。
4. java並發編程問題
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class CachedFactorizer implements Servlet { //java 網路訪問中的緩存編程
// @GuardedBy is an annotation introced by Brian Goetz in his excellent
// book on concurrency : Java Concurrency In Practice. The idea is that
// you indicate the lock that you need to hold before you access a particular
// member variable.
@GuardedBy("this") private BigInteger lastNumber;
//means you should synchronize on "this" before accessing lastNumber.
@GuardedBy("this") private BigInteger[] lastFactors;
//means you should synchronize on "this" before accessing lastFactors.
@GuardedBy("this") private long hits;
//means you should synchronize on "this" before accessing hits.
@GuardedBy("this") private long cacheHits;
//means you should synchronize on "this" before accessing cacheHits.
public synchronized long getHits() {
return hits;
}
public synchronized double getCacheHitRatio() {
return (double) cacheHits / (double) hits;
}
public void service(ServletRequest req, ServletResponse resp) {
BigInteger i = extractFromRequest(req);
BigInteger[] factors = null;
//訪問前面提到的那些敏感數據之前,先call synchronized(this) 同步
synchronized(this) {
++hits; //hit 自動加1
if(i.equals(lastNumber)) { //如果i和lastNumber是相等的話
++cacheHits; //cacheHits 自動加1
factors = lastFactors.clone(); //factors更新數據用lastFactors
}
}
if(factors == null) { //如果factors是空的話。
factors = factor(i); //更新factors的數據
synchronized(this) { //訪問前面提到的那些敏感數據之前,先call synchronized(this) 同步
lastNumber = i; //更新lastNumber
lastFactors = factors.clone(); //lastFactors 用factors來更新
}
}
encodeIntoResponse(resp, factors); //取得resp然後返回對應數據
}
}
5. java怎麼實現並發編程
利用多線程就可以,處理好同步或非同步的關系,非同步的話,設置好回調,同步的話,syncronized一下
6. 如何學習Java「高並發」,並在項目中實際應用
如果不使用框架,純原生Java編寫,是需要了解Java並發編程的,主要就是學習Doug Lea開發的那個java.util.concurrent包下面的API;
如果使用框架,那麼在代碼層面確實不會需要太多的去關注並發問題,反而是由於高並發會給系統造成很大壓力,要在緩存、資料庫操作上要多加考慮。
即使是使用框架,在工作中還是會用到多線程,就拿常見的CRUD介面來說,比如一個非常耗時的save介面,有多耗時呢?我們假設整個save執行完要10分鍾,所以,在save的時候,就需要採用非同步的方式,也就是單獨用一個線程去save,然後直接給前端返回200。
可見,就算只是簡單的CRUD,也有可能用到多線程的。
當然,這只是一個簡單的例子,要想學習Java的精髓,並發還是要學的;不管你只是業務開發,還是在開發框架。
7. 如何深入學習Java並發編程
Java如何學?我的經驗告訴你
之前就聽說Java很難學,自己親身實踐之後,感覺確實如此,想學好Java並非易事。以下三點是必須要做到的:1:課前認真預習;2:課上認真聽講;3:課後認真復習,勤練代碼。只有做好這三點才能跟上老師的步伐。學習編程語言沒有捷徑可走,關鍵的一點就是堅持練習,只有每天保證一定的代碼練習量,在遇到問題時才有一定的思路。
編程語言的學習是一個漫長的過程,欲速則不達,不能一步登天。在這個過程中需要慢慢積累經驗,把基礎打扎實。不要認為寫出了一個簡單的小程序,就覺得自己已經學的很好了,這只不過是編程學習過程中的一個小小實踐。
學習Java,看書是必不可少的一項內容,但是我們在看書的時候,不要等到完全理解了才動手敲代碼,而是應該在看書的同時敲代碼,因為程序運行中的各種情況可以讓你更快更牢固地掌握知識點。雖然學習中不要求英語非常好,但不能一點不會,最起碼像JavaAPI簡單的文檔還是要能看懂的,另外建議再開啟一個「金山詞霸」,方便翻譯,單詞看多了就會越來越熟練,在學Java的同時還可以提高英文水平。對於新手學習java有困難不知道怎麼去做的可以加扣:五七八接著再來不要斷開零二四後面跟著再來一四四連在一起,進行大神的交流同時得到幫助,獲取免費聽課許可權!!!
程序代碼是軟體開發最重要的成果之一,其中滲透了程序員的思想與靈魂。當你學習一個類以後,你就可以自己寫個簡單的程序來運行一下,看看有什麼結果,然後再多調用幾個類的方法,看看運行結果,這樣可以非常直觀地學習類的使用方法,而且記憶非常深刻。學開發不應該滿足把代碼調通,而是應該嘗試換個方式寫行不行。
有人說學習編程就是個破壞的過程,把書本上的例子,自己學習Documentation編寫的例子在運行通過以後,不斷地嘗試著用不同的方法實現,不斷地嘗試破壞代碼的結構,看看會有什麼結果。通過這樣的方式,你會非常熟練地掌握Java。
在學習Java這段時間,有時候會覺得有點苦,但是我覺得正是有了奮斗時的苦,才能換來學成後的甜。當你認真寫代碼做完一個項目時,你會有一種成就感,心裡會有一種說不出的喜悅。學Java靠的是韌勁,靠的是拼勁,靠的是堅持不懈。如果做好了這幾點,我想學習Java對你來說不會太難。還有,你自己要有信心,相信自己能學會,要學會激勵自己,加油!
經驗總結:
1.做任何事情都要專註:你不專注,別人能做到90%-100%,你只能處在最底層。
2.代碼保持規范性,細致了解代碼機制;
3.確保計算機基礎知識的扎實性,提升自己分析問題和解決問題的能力;
4.多做實習,多和老師做項目;
5.勤記筆記,勤敲代碼,勤問問題,勤積累,多做總結;
6.要不斷建立自己的人脈圈,構建一個屬於自己的小圈子——IT圈。
8. java並發編程看什麼書比較好
弟發現一本很好的java書籍,不敢獨享,在此與大家分享
Java並發編程—設計原則與模式(第二版),本書簡介:
本書全面介紹了如何使用java 2平台進行並發編程,較上一版新增和擴展的內容包括:
·存儲模型 ·取消 ·可移植的並行編程 ·實現並發控制的工具類
java平台提供了一套廣泛而功能強大的api,工具和技術。內建支持線程是它的一個強大的功能。這一功能為使用java編程語言的程序員提供了解並發編程這一誘人但同時也非常具有挑戰性的選擇。
本書通過幫助讀者理解有關並發編程的模式及其利弊,向讀者展示了如何更精確地使用java平台的線程模型。
這里,讀者將通過使用java.lang.thread類、synchronized和volatile關鍵字,以及wait、notify和 notifyall方法,學習如何初始化、控制和協調並發操作。此外,本書還提供了有關並發編程的全方位的詳細內容,例如限制和同步、死鎖和沖突、依賴於 狀態的操作控制、非同步消息傳遞和控制流、協作交互,以及如何創建基於web的服務和計算型服務。 本書的讀者對象是那些希望掌握並發編程的中高級程序員。從設計模式的角度,本書提供了標準的設計技巧,以創建和實現用來解決一般性並發編程問題的組件。貫 串全書的大量示例代碼詳細地闡述了在討論中所涉及到的並發編程理念的細微之處。