1. 程式人生 > >JAVA學習併發程式設計心得

JAVA學習併發程式設計心得

  近幾天工作不是很忙,自己學習了一些併發程式設計技術。買了兩本書《Java併發變成核心方法與框架》和《Java併發程式設計實戰》。其中第一本書看了兩遍,第二本正在學習。但在學習過程中,發現第二本併發實戰講的沒有第一本詳細。但是講了很多關於併發程式設計的解決方案。所以推薦,如果初次學習併發程式設計,看第一本書,有過併發、多執行緒開發經驗的看第二本書。

  看完《Java併發變成核心方法與框架》這本書後,總結了以下幾個方法:

一、Semaphore:用來規定使用多少個執行緒。

二、Exchanger:用來兩個執行緒之間傳輸資料。

三、CountDownLatch:用來實現多個執行緒相互等待,等所有執行緒全部執行完成後,再一起向下進行。(只可使用一次)。執行緒完成一個,計數減一,直到計數為0,則釋放繼續向下進行。

四、CyclicBarrier:用來實現多個執行緒相互等待,等所有執行緒全部執行完成後,再一起向下進行。(可進行多次,多屏障等待)。執行緒完成一個,計數減一,直到計數為0,則釋放繼續向下進行。

五:Phaser:用來實現多個執行緒相互等待,等所有執行緒全部執行完成後,再一起向下進行。(可進行多次,多屏障等待)。執行緒完成一個,計數加一,直到到達指定的計數數,則釋放繼續向下進行。

六、Executor:用於建立執行緒池,可重複使用執行緒,減少系統性能開銷。介面為ExecutorService

     1.newcachedThreadPool  :建立無界執行緒池。

     2.newFixedThreadPool(int):建立有界執行緒池。

     3.newsingleThreadExecutor():建立單一執行緒池。

七、ThreadPoolExecutor:用於建立執行緒池,可重複使用執行緒,減少系統性能開銷。可設定執行緒池核心執行緒數、最大執行緒數、設定多少秒後刪除執行完成的執行緒以及可設定執行緒使用的佇列。

八、Future(Callable,Runnable):Callable用於執行有返回值的方法,Runnable用於執行無返回值的方法。Future用於獲取返回值和執行結果。

九、CompletionService:以非同步的方式執行任務,一邊生產任務,一百年處理已完成的任務。(submit執行任務,take取得已完成的任務),它解決了Future的阻塞特性的缺點。

十、ScheuledExecutorService:實現定時任務。與執行緒池功能結合使用。

十一、Fork-Join分治程式設計:把一個大任務分解成多個小任務,然後再把各個小任務的結果進行彙總。

十二、併發集合框架。