⑴ java並發編程實戰怎麼樣
我不想再繼續吐槽翻譯,的確有些話理解起來有些費勁,但就內容而言,這本書當吃無愧堪稱JAVA並發領域的一朵明珠,光芒萬丈的指引著並發這條路。(如果你有能力就讀英文版的,既然要吐槽中文版,還是就事論事的好) 前年的時候看過一邊,當時覺得讀這本書的時候用個新的成語來形容就是——不明覺厲。 近兩年各種並發開始流行,其實也流行了幾十年了,可以負責任的說網上你能看到的幾乎所有中文關於JAVA並發的理解和解讀幾乎都可以在這本書上找到。 個人感覺還是應該上來介紹JMM的,這樣至少能提起很大興趣。此書的翻譯堪稱晦澀難懂,如果不是硬著頭皮讀下來,嘗試去理解,這真不是水平的問題,真難以想像花了10幾個小時愣是把這本書再次讀完了。 其實這本書讀完後你最大的收獲應該是能夠去理解那些現今相當牛逼的JAVA領域的並發庫和框架了,當然你的收獲還有就是特別小心的使用鎖,發布可見性,活躍性,性能和測試等等。 這本書包含的內容涉及之廣、之深不能全部一下子消化完,例子非常具有代表性和針對性,值得你面對並發時再次讀讀這本書,如果接觸的不多或者只是剛剛了解並發,也非常適合你對整個JAVA世界的並發領域有個認識,重讀會有更進一步的理解,JAVA的並發真是令人瞠目結舌,無法形容,強大和靈活到一定地步了,當然這份強大是用龐大付出代價的。 個人感覺看完後,真是應該再把JDK里關於並發的庫仔細讀讀。 雖然這本書是在講JAVA的並發,但是如果有別的語言經驗的同學也應該推薦讀讀,讓你了解下JAVA世界的並發是如此的精彩和復雜詭異。 雖然不能完全記住書中的細節,但建好索引就足夠了,待日後用時可以再次翻閱。
⑵ 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然後返回對應數據
}
}
⑶ JAVA並發編程實踐的內容簡介
《JAVA並發編程實踐》隨著多核處理器的普及,使用並發成為構建高性能應用程序的關鍵。Java 5以及6在開發並發程序中取得了顯著的進步,提高了Java虛擬機的性能以及並發類的可伸縮性,並加入了豐富的新並發構建塊。在《JAVA並發編程實踐》中,這些便利工具的創造者不僅解釋了它們究竟如何工作、如何使用,還闡釋了創造它們的原因,及其背後的設計模式。

⑷ 《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分校的計算機科學教授。

⑸ 《java並發編程實戰》和《java並發編程實踐》哪個是傳說中的那本...
def MergeSort(lists):
if len(lists) <= 1:
return lists
num = int( len(lists)/2 )
left = MergeSort(lists[:num])
right = MergeSort(lists[num:])
return Merge(left, right)
def Merge(left,right):
r, l=0, 0
result=[]
while l<len(left) and r<len(right):
if left[l] < right[r]:
result.append(left[l])
l += 1
else:
result.append(right[r])
r += 1
result += right[r:]
result+= left[l:]
return result
print MergeSort([1, 2, 3, 4, 5, 6, 7, 90, 21, 23, 45])
⑹ java並發編程實踐中文版
已發,請查收。。。
⑺ java並發編程實戰4-14的程序為什麼非線程安全
就是搶占資源,就是一個資源可能同時被同一個線程搶占,所以是不安全的
⑻ 求java並發編程的實例 java多線程編程例子
不懂……如果你是用線程同時去添加多個用戶,第一,人不是多線程的,你只能一個個去添加;第二,如果你想添加用戶的時候還沒有添加完成又做別的事情,完成可能用面向對象思想,程序一塊塊執行的,對於編人員來說不用考慮到多線程,程序本身已經完成了,比如我點擊了添加用戶的按鈕,你的程序還可以往下跑,因為你僅僅是new了一個添加用戶的窗口,主程序可以繼續向下執行,除非你玩模態對話;第三,如果你非要多線程添加用戶,就用簡單的線程例子能解決啊,public void run(){}方法里寫上添加用戶的代碼就行啦,主程序運行時new 你寫好的線程類(YouThread implements Runnable{public void run(...)}),啟動它(new Thread(new YouThread()).start());之後寫上自己要繼續執行的代碼