java併發程式設計實戰 讀書筆記

2021-07-10 07:18:54 字數 750 閱讀 3285

1.程序有它自己的變數的完備集,執行緒則共享相同資料。

2.executor代替thread  任務提交和任務執行解耦。

3.future 任務生命週期,描述任務執行 , 相當於乙個單一計算控制代碼。 可以取消任務。

4.callable 抽象任務

5.comptionservice 相當於批處理計算的控制代碼

6.閉鎖(countdownlatch)等待的是事件,關卡(cyclicbarrier)等待的是其他執行緒

7.呼叫wait()前測試條件謂詞,永遠在迴圈中呼叫wait(),防止假喚醒(並不是唯一原因)

8.執行緒池、佇列、飽和策略(呼叫者執行策略—將負荷逐漸往外移(池-->佇列-->tcp層))

飽和策略:對於有界佇列滿了之後的一種策略,用semaphore可以實現限制任務注入率

9.優先使用newcachedthreadpool

①效能好,synchronousqueue取代linkedblockingqueue

②有限執行緒池或佇列可能發生死鎖,若任務之間相互依賴。

10.執行緒池的有界無界並不代表工作佇列的有界無界,兩者無必然關係(對於無限的池,可以用synchronousqueue來繞開佇列)

11.遞迴通常的順序化的,但如果每次迭代都是對立的,並且我們不必等待所有迭代都完成後再一起處理,則可以使用executor把順序轉化為並行。

12.jvm內在同步:靜態初始化是jvm完成的。jvm要在初始化期間獲得乙個鎖,這個鎖每個執行緒至少都會用到一次,來確保乙個類是否已被載入。

Java併發 JAVA併發程式設計實戰 讀書筆記3

發布乙個物件的意思是使它能夠被當前範圍之外的 所使用。比如將乙個引用儲存到其他 可以訪問的地方,在乙個非私有的方法中返回這個引用。在很多情況下,我們需要確保物件及它們的內部狀態不被暴露。乙個物件在尚未準備好時就將它發布,稱作逸出。最常見的發布物件的方式就是將物件的引用儲存到公共靜態域中,任何類和執行...

Java併發 JAVA併發程式設計實戰 讀書筆記8

為計算結果建立高效 可伸縮的快取記憶體 public inte ce computable public class expensivefunction implements computable public class memoizer1implements computable public ...

Java併發 JAVA併發程式設計實戰 讀書筆記14

無論何時,執行緒池需要建立乙個執行緒都要通過乙個執行緒工廠。public inte ce threadfactory 預設的執行緒工廠建立乙個新的非守護的執行緒,其中的newthread 會在建立乙個新執行緒時被呼叫。public class mythreadfactory implements t...