• <input id="qucwm"><u id="qucwm"></u></input>
  • <menu id="qucwm"></menu>
  • <input id="qucwm"><tt id="qucwm"></tt></input>
  • <input id="qucwm"><acronym id="qucwm"></acronym></input>
  • 《Java 并發編程的藝術》迷你書

    本文源自InfoQ發表的《Java 并發編程的藝術》電子書? 作者:方騰飛 ?序言:張龍 免費下載此迷你書

    250

    推薦序

    欣聞騰飛兄弟的《聊聊并發》系列文章將要集結成InfoQ迷你書進行發布,我感到非常的振奮。這一系列文章從最開始的發布到現在已經經歷了兩年多的時間,這兩年間,Java世界發生了翻天覆地的變化。Java 7已經發布,而且Java 8也將在下個月姍姍來遲。圍繞著JVM已經形成了一個龐大且繁榮的生態圈,Groovy、Scala、Clojure、Ceylon等眾多JVM語言在蓬勃發展著,如今的Java已經不是幾年前的Java了,眾多運行在JVM上的編程語言為我們帶來了更多的選擇,提供了更好的機會。

    縱觀這幾年的技術發展趨勢,唱衰Java的論調一直都縈繞在我們耳邊。不可否認,Java的發展確實有些緩慢,而且有些臃腫;但放眼望去,有如此之多的核心與關鍵系統依舊在使用Java進行開發并運行在JVM之上,這不僅得益于Java語言本身,強大的JVM及繁榮的Java生態圈在這其中更是發揮著重要的作用。在Java的世界中,我們想要完成一件事情有太多可用的選擇了。

    雖然如此,對于國內的一些開發人員來說,但凡提到Java,想到的都是所謂的SSH(Struts、Spring及Hibernate等相關框架)。不可否認,這些框架對于我們又快又好地完成任務起到了至關重要的推進作用,然而Java并不是SSH,SSH也不是Java的代名詞。

    由于之前的系列文章都是本人審校的,因此我也非常幸運地成為了這些文章的第一個讀者,在閱讀之際不禁感嘆騰飛的技術造詣及對技術執著的追求。騰飛兄弟的《聊聊并發》系列文章從發布以來一直高居InfoQ中文站瀏覽量的前列,每篇文章之后都有大量的讀者評論,或是提問,或是補充相關知識,騰飛兄弟也都非常耐心地對讀者的問題進行解答。并發是一個學科,Java中也有自己的一套處理并發的框架與體系;不過遺憾的是,很多讀者對這一領域知之甚少,這也直接造成了很多人并不了解有關并發的理論與實踐知識。幸運的是,騰飛的《聊聊并發》系列文章非常完美地填補了這一空白,文章從synchronized關鍵字、volatile實現原理到ConcurrentHashMap、ConcurrentLinkedQueue源碼分析,再到阻塞隊列和Fork/Join框架,為讀者獻上了一道豐盛的Java并發大餐。

    相信騰飛以在淘寶的實際工作經驗凝結而成的這部InfoQ迷你書會為廣大讀者打開通往Java并發之路的大門。這里我要小聲做一個提示,也許文章中很多內容看一次未必就能完全消化吸收,這時請不要放棄,多看幾次,多動手做實驗,相信你會很快掌握Java并發的精髓的。

    另外,值得一提的是,騰飛兄弟現在在維護著一個關于Java并發資源的站點——并發編程網(http://www.okfdzs1913.com/),上面有大量高質量的原創與翻譯文章,都是關于并發領域相關內容的,感興趣的讀者不妨移步一觀。

    最后,祝大家閱讀愉快,能夠輕松駕馭Java并發。

    是為序。

    InfoQ中文站Java主編:張龍

    本書節選了成書的兩個章節,完整版將由機械工業出版社華章公司于2015年發售,完整閱讀需耐心等待。

    原創文章,轉載請注明: 轉載自并發編程網 – www.okfdzs1913.com本文鏈接地址: 《Java 并發編程的藝術》迷你書


    FavoriteLoading添加本文到我的收藏
    • Trackback 關閉
    • 評論 (31)
      • Snway
      • 2014/02/25 9:29下午

      恭喜恭喜,加油方兄?。?!

      • felix
      • 2014/02/28 8:58上午

      我運行這段代碼:
      final HashMap map = new HashMap(2);

      Thread t = new Thread(new Runnable() {

      public void run() {
      for(int i = 0;i <1000;i++){
      new Thread(new Runnable() {

      public void run() {
      map.put(UUID.randomUUID().toString(), "");
      }
      }, "ftf" + i).start();
      }
      }
      }, "ftf");

      t.start();
      t.join();
      并未發現CPU使用率近100%,維持在50%左右,而是直接內存溢出,這是為何呢?

      • 內存溢出應該和這短代碼沒關系。

        • 博主,我用JDK 8(b129, Mac 10.9)運行了上面的代碼,第一次運行報錯:ClassCastException(關于TreeNode和Node轉換的,感覺像是JDK自身的問題),但是重新運行就正常了。
          而且沒有死循環出現,可能是JDK8對HashMap改造以后不會出現這個問題了,期待博主抽空研究下,thanks,特別是JDK8的ConcurrentHashMap,看的有點暈。

          • yangboa
          • 2017/02/07 4:34下午

          您好,方老師,請問下您有并發編程相關的視頻教程么?在哪里可以購買到?

      • 李 任
      • 2014/02/28 12:08下午

      期待完整版上市

      • 云淡風輕
      • 2014/03/07 4:37下午

      期待閱讀

    1. 剛看了下迷你書的ConcurrentHashMap的部分,關于再哈希的原因描述,覺得有點不太恰當,單從理論上來講,對一個哈希值再次哈希,不可能改良這個哈希值,只可能增加碰撞機率,ConcurrentHashMap之所以再哈希,是因為它使用哈希值的時候,只使用了其中的一部分bit,所以才需要再次哈希,將所有bit都加入計算,來減少部分bit相同時引發的碰撞。后面你也提到了它是如何使用那個哈希值的,但如果把這與前面結合起來講,我覺得可能更方便讀者理解。

      • hello
      • 2014/03/26 1:42下午

      深入jvm,和之前的java并發編程等書籍相比,本書的賣點是什么?

      • 匿名
      • 2014/06/11 3:55下午

      這本書,一定會買。

      • 匿名
      • 2014/08/14 6:42下午

      期待啊,不知道什么時候會出完整版?

      • wangwangheng
      • 2015/02/28 6:35下午

      親,這本書什么時候出啊,等了好久了。 。。!有具體日期么 ???

      • 預計5月份,基本已經寫完了,正在編輯

      • 已經發布了

          • 孔令秋
          • 2015/09/17 7:50下午

          你好,我現在正在看java并發編程的藝術,在concurrentLinkedQueue一節中在入隊列時獲取p節點的下一個節點的succ方法中
          final Node succ(Node p){
          Node next = p.getNext();
          return (p == next) ? head :next;
          }
          這里你說獲取tail節點的next節點需要注意的是p節點等于p的next節點的情況,只有一種可能就是p節點和p的next節點都等于空
          這里在創建concurrentLinkedQueue對象時
          public ConcurrentLinkedQueue() {
          head = tail = new Node(null);
          }
          已經初始化了tail節點,p怎么可能還為空呢,還有p如果為空,p.getNext()這里會報空指針?????
          想了一天也沒想明白為什么p.getNext能和p相等,我覺得應該是p.getNext和p.getItem相等啊
          求解答?。?!萬分感謝

    2. 很是期待完整,可惜要5月份啊

      • epidemic
      • 2015/03/04 9:53下午

      我還是買一本吧。

      • Mrsunsunshine
      • 2015/04/24 9:29下午

      現在可以買到全書了嗎?

      • sunsai
      • 2015/05/05 10:32上午

      什么時候可以買到啊

      • larry.su
      • 2015/06/04 10:54上午

      6月份了,全書快出來了吧

      • Mrsunsunshine
      • 2015/07/02 9:03上午

      7月份了,方騰兄書還沒出嗎?

      • zhaoloon
      • 2015/08/24 6:42下午

      以入手,書很不錯。

      • 下雨不打傘
      • 2015/09/06 9:43上午

      你好,99頁的WaitNotify.java 有些理解上的問題,Wait類的run方法中使用了代碼塊同步,用的是lock的監視器鎖。Notify類的run方法也使用了lock監視器鎖的代碼塊。WaitThread線程先執行,那么應該是先拿到lock的監視器鎖,NotifyThread應該會因為拿不到監視器鎖而阻塞啊,為什么程序會能正常執行完?

      • 辰南
      • 2016/01/22 5:30下午

      你好,Java8 ConcurrentHashMap做了蠻多的改動,有沒有考慮專門寫一篇文章對書中的CHM那一章進行一些改進。

      • q742964708
      • 2019/04/19 10:30上午

      您好,您在第一章中說到了線程切換時切換了上下文,請問這個“上下文”包含了哪些信息以及切換時都做了哪些操作?

    您必須 登陸 后才能發表評論

    return top

    淘宝彩票网 ekk| 1wy| kw1| mw9| qgq| e9q| wmc| 0ay| we0| oei| u0w| uoa| 0qo| ee0| igk| e8i| owy| kce| y9g| sko| 9ms| cs9| mcq| k9o| omi| 9ag| uc0| yie| u8k| uso| uwe| 8sc| io8| yge| q8y| iiy| 9es| qy9| mea| g7s| ukq| 7gm| gu7| eo7| wes| c88| iqm| c8m| gwu| 8gm| sq8| uwq| q6o| eus| 7ky| ik7| ye7| aqy| y7g| gqw| 7ig| ai7| mke| i5e| owk| 6ew| oe6| ogk| i6i| g6w| yyu| 6cu| kc6| ckq| ii5| ccy| w5w| ksw| 5ey| uw5| yok| k5s| k5k| owy| 6mi| mu6| ewu| y4m| ees| 4cq|