<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    xylz,imxylz

    關注后端架構、中間件、分布式和并發編程

       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      111 隨筆 :: 10 文章 :: 2680 評論 :: 0 Trackbacks

    #

         摘要: 在JDK 5之前Java語言是靠synchronized關鍵字保證同步的,這會導致有鎖(后面的章節還會談到鎖)。
    鎖機制存在以下問題:
    (1)在多線程競爭下,加鎖、釋放鎖會導致比較多的上下文切換和調度延時,引起性能問題。
    (2)一個線程持有鎖會導致其它所有需要此鎖的線程掛起。
    (3)如果一個優先級高的線程等待一個優先級低的線程釋放鎖會導致優先級倒置,引起性能風險。
    volatile是不錯的機制,但是volatile不能保證原子性。因此對于同步最終還是要回到鎖機制上來。
    獨占鎖是一種悲觀鎖,synchronized就是一種獨占鎖,會導致其它所有需要鎖的線程掛起,等待持有鎖的線程釋放鎖。而另一個更加有效的鎖就是樂觀鎖。所謂樂觀鎖就是,每次不加鎖而是假設沒有沖突而去完成某項操作,如果因為沖突失敗就重試,直到成功為止。  閱讀全文
    posted @ 2010-07-04 18:03 imxylz 閱讀(48007) | 評論 (19)編輯 收藏

         摘要: 在這個小結里面重點討論原子操作的原理和設計思想。
    由于在下一個章節中會談到鎖機制,因此此小節中會適當引入鎖的概念。
    在Java Concurrency in Practice中是這樣定義線程安全的:
    當多個線程訪問一個類時,如果不用考慮這些線程在運行時環境下的調度和交替運行,并且不需要額外的同步及在調用方代碼不必做其他的協調,這個類的行為仍然是正確的,那么這個類就是線程安全的。  閱讀全文
    posted @ 2010-07-03 20:40 imxylz 閱讀(46608) | 評論 (16)編輯 收藏

         摘要: 在這一部分開始討論數組原子操作和一些其他的原子操作。
    AtomicIntegerArray/AtomicLongArray/AtomicReferenceArray的API類似,選擇有代表性的AtomicIntegerArray來描述這些問題。
    int get(int i)
    獲取位置 i 的當前值。很顯然,由于這個是數組操作,就有索引越界的問題(IndexOutOfBoundsException異常)。

    對于下面的API起始和AtomicInteger是類似的,這種通過方法、參數的名稱就能夠得到函數意義的寫法是非常值得稱贊的。在《重構:改善既有代碼的設計》和《代碼整潔之道》中都非常推崇這種做法。  閱讀全文
    posted @ 2010-07-02 14:19 imxylz 閱讀(48170) | 評論 (6)編輯 收藏

         摘要: 從相對簡單的Atomic入手(java.util.concurrent是基于Queue的并發包,而Queue,很多情況下使用到了Atomic操作,因此首先從這里開始)。很多情況下我們只是需要一個簡單的、高效的、線程安全的遞增遞減方案。注意,這里有三個條件:簡單,意味著程序員盡可能少的操作底層或者實現起來要比較容易;高效意味著耗用資源要少,程序處理速度要快;線程安全也非常重要,這個在多線程下能保證數據的正確性。這三個條件看起來比較簡單,但是實現起來卻難以令人滿意。
    通常情況下,在Java里面,++i或者--i不是線程安全的,這里面有三個獨立的操作:或者變量當前值,為該值+1/-1,然后寫回新的值。在沒有額外資源可以利用的情況下,只能使用加鎖才能保證讀-改-寫這三個操作時“原子性”的。  閱讀全文
    posted @ 2010-07-01 15:21 imxylz 閱讀(65853) | 評論 (2)編輯 收藏

         摘要: 去年年底有一個Guice的研究計劃,可惜由于工作“繁忙”加上實際工作中沒有用上導致“無疾而終”,最終只是完成了Guice的初步學習教程,深入的研究沒有繼續進行下去。
    最近一直用的比較多的就是java.util.concurrent(J.U.C),實際上這塊一直也沒有完全深入研究,這次準備花點時間研究下Java里面整個并發體系。初步的設想包括比較大的方便(包括硬件、軟件、思想以及誤區等等),因此可能會持續較長的時間。這塊內容也是Java在多線程方面引以為豪的一部分,深入這一部分不僅對整個Java體系有更深的了解,也對工作、學習的態度有多幫助。  閱讀全文
    posted @ 2010-06-30 18:09 imxylz 閱讀(69419) | 評論 (8)編輯 收藏

    posted @ 2010-06-23 10:46 imxylz 閱讀(18587) | 評論 (0)編輯 收藏

    posted @ 2010-01-31 00:00 imxylz 閱讀(19888) | 評論 (0)編輯 收藏

    posted @ 2010-01-29 16:09 imxylz 閱讀(24130) | 評論 (2)編輯 收藏

    posted @ 2010-01-29 16:05 imxylz 閱讀(21894) | 評論 (0)編輯 收藏

         摘要: 在前面的教程中我們講了Guice注入例子,在使用上具體描述了Guice的注入過程。在下面的篇幅中我們從源碼級了解了Guice的注入過程。
    我們從具體到抽象再到具體的深入了解Guice的內部運作機制 。
    下面一張序列圖就是描述了Guice最簡單的一次注入過程。比如下面的例子是我們熟悉的。  閱讀全文
    posted @ 2010-01-08 11:46 imxylz 閱讀(28075) | 評論 (6)編輯 收藏

    posted @ 2010-01-04 23:45 imxylz 閱讀(29220) | 評論 (0)編輯 收藏

         摘要: 以前有段時間需要知道某些類在什么jar包中,這樣當出現ClassNotFoundException或者NoClassDefFoundError的時候我們就可以去找這個類在什么jar包中然后去引用此jar包即可。在我們的系統很小的時候我恨不能都將jar包放入eclipse中,這樣借助 eclipse平臺查找類就非常方便了。包括非常有用的Ctrl+Shift+T,Ctrl+T,Reference search等等,但是當工程多了大了的時候,上百個jar包放入eclipse中那個速度完全不是我能忍受的,稍微動一下就看到CPU一直在那抖動。好吧,用maven,更慢,簡直受不了,所以大多數時候Maven是一個比較好的批處理工具,和UI結合起來還不是很好用。

    我發現我非常需要這個從jar包中尋找類的功能,我只需要看看我的類在什么地方而已,僅次而已!于是自己就寫了一個類查找器。非常簡單就是遍歷所有的jar包中的類,當匹配類名稱的時候就顯示類所在的jar包。
    有以下幾個特性:

    * 允許添加jar包,zip包
    * 允許匹  閱讀全文
    posted @ 2009-12-31 17:07 imxylz 閱讀(20884) | 評論 (11)編輯 收藏

         摘要: 本章節繼續討論Google Guice與第三方的整合,這里主要討論如何整合JMX的服務,通過guice-jmx插件我們可以很方便的將我們的服務注入到JMX服務中,這樣就能夠通過遠程調用來控制我們的服務。  閱讀全文
    posted @ 2009-12-31 15:35 imxylz 閱讀(19868) | 評論 (3)編輯 收藏

         摘要: Google Guice 整合第三方組件。

    在《Google Guice 入門教程06 – Web 和Servlet》 中我們看到了Guice 整合Struts 2的應用。本章節繼續討論Guice整合其它第三方組件的應用。

    本章節重點談Guice與DWR和Spring的整合。
      閱讀全文
    posted @ 2009-12-29 00:11 imxylz 閱讀(27369) | 評論 (5)編輯 收藏

         摘要: 本章節主要講Guice中如何開發Servlet,當然了作為IOC的容器,Guice在這方面仍然局限于依賴注入功能。作為WEB方面的開發就不能不提Struts,這里著重談如何與Struts 2進行整合。  閱讀全文
    posted @ 2009-12-27 22:58 imxylz 閱讀(16781) | 評論 (1)編輯 收藏

         摘要: 本章節主要討論Guice中AOP的使用,其中花了一些篇幅談AOP的概念,然后通過一些API和例子來說明AOP的具體使用過程。  閱讀全文
    posted @ 2009-12-27 00:16 imxylz 閱讀(17776) | 評論 (2)編輯 收藏

         摘要: 本章節繼續討論依賴注入的其他話題,包括作用域(scope,這里有一個與線程綁定的作用域例子)、立即初始化(Eagerly Loading Bindings)、運行階段(Stage)、選項注入(Optional Injection)等等。   閱讀全文
    posted @ 2009-12-25 18:02 imxylz 閱讀(16619) | 評論 (1)編輯 收藏

         摘要: 本章節繼續討論依賴注入的一些其它話題,包括多接口的實現、Provider的使用、綁定常量和綁定Properties等。  閱讀全文
    posted @ 2009-12-24 19:13 imxylz 閱讀(18668) | 評論 (1)編輯 收藏

         摘要: 本文主要討論Google Guice三種屬性注入的方式,包括基本屬性注入、構造函數注入和Setter注入等。  閱讀全文
    posted @ 2009-12-23 23:45 imxylz 閱讀(20455) | 評論 (3)編輯 收藏

         摘要: 在我們64位的CenterOS上,指定了JVM的最大堆內存為5500M,但是在top和進程status中可以看到實際占用內存已經遠遠大于5500M,那么JVM到底占用多大內存?如果做到控制JVM的占用內存大小?  閱讀全文
    posted @ 2009-12-23 19:51 imxylz 閱讀(3549) | 評論 (1)編輯 收藏

         摘要: 基于Google Guice 2.0的入門教程,本章節主要講類的依賴注入,也就是IOC容器的核心組件。  閱讀全文
    posted @ 2009-12-22 23:28 imxylz 閱讀(35741) | 評論 (5)編輯 收藏

         摘要: 本文將探討單例模式的各種情況,并給出相應的建議。
    單例模式應該是設計模式中比較簡單的一個,但是在多線程并發的環境下使用卻是不那么簡單了。
    本文將探討在多線程下靜態域單例模式、雙重檢查鎖機制、類延時加載、同步鎖等機制的相關技術問題。  閱讀全文
    posted @ 2009-12-18 23:15 imxylz 閱讀(7345) | 評論 (4)編輯 收藏

         摘要: 大家都知道HashMap不是線程安全的,但是大家的理解可能都不是十分準確。很顯然讀寫同一個key會導致不一致大家都能理解,但是如果讀寫一個總是存在HashMap中且不變的對象會有問題么?我們來試試看。  閱讀全文
    posted @ 2009-12-18 18:20 imxylz 閱讀(6164) | 評論 (2)編輯 收藏

    posted @ 2009-11-14 22:25 imxylz 閱讀(635) | 評論 (0)編輯 收藏

    posted @ 2009-11-13 23:31 imxylz 閱讀(573) | 評論 (0)編輯 收藏

    posted @ 2009-09-27 16:51 imxylz 閱讀(1338) | 評論 (1)編輯 收藏

    posted @ 2009-07-29 22:04 imxylz 閱讀(3261) | 評論 (4)編輯 收藏

    僅列出標題
    共3頁: 上一頁 1 2 3 

    ©2009-2014 IMXYLZ
    主站蜘蛛池模板: 免费在线观看黄色毛片| 免费又黄又爽又猛的毛片| 亚洲国产午夜精品理论片| 嫩草影院免费观看| 色欲aⅴ亚洲情无码AV| 亚洲精品国产va在线观看蜜芽| 久久精品视频免费| 亚洲毛片无码专区亚洲乱| 中文字幕a∨在线乱码免费看| 亚洲欧洲日本精品| 好大好硬好爽免费视频| 亚洲精品无码高潮喷水A片软| 在线视频免费国产成人| 一级视频免费观看| 亚洲无mate20pro麻豆| 免费一级成人毛片| 久久久精品免费国产四虎| 亚洲视频一区在线观看| 成年人视频在线观看免费| 免费无码专区毛片高潮喷水| 亚洲网站视频在线观看| 日韩免费视频网站| 免费国产在线精品一区| 亚洲国产成人精品激情| 亚洲熟伦熟女新五十路熟妇| 久久不见久久见免费影院| 一级做a爱过程免费视| 亚洲AV无码成人网站久久精品大| 免费理论片51人人看电影| 插鸡网站在线播放免费观看| 亚洲AV永久无码精品一福利| 国精无码欧精品亚洲一区 | 国产麻豆一精品一AV一免费| 亚洲一区二区三区在线观看蜜桃| 国产伦精品一区二区三区免费迷| 免费人成在线观看网站品爱网| 亚洲欧洲无码一区二区三区| 国产v亚洲v天堂无码网站| 日韩在线a视频免费播放| 亚洲精品国产av成拍色拍| 亚洲精品午夜无码电影网|