說一下 jdk7 的 ForkJoinPool

來源:互聯網
上載者:User

by yinmingjun


網上找了一下 ForkJoinPool 的資料,發現資料不多,看來大多的兄弟還留在 Executors 的坑裡沒出來。


簡單的說,ForkJoinPool 是更好的線程池的技術,主要是面向目前的多線程高並發的情境提供的底層工具,理念和效能上比原來的線程池模式高不少(沒測試比較,只是直覺),像scala的promise模式的底層,直接用的就是ForkJoinPool。


下面,簡單說一下使用方法:

1、產生一個ForkJoinTask



2、建立 ForkJoinPool 執行 task




就是這麼簡單。



簡單的說一下 ForkJoinPool 的特性:

1、ForkJoinPool的預設構造是根據機器的CPU數量構造線程池的大小的,也就是說一般有一個ForkJoinPool就夠了。



2、ForkJoinPool 的 execute 把 task 提交到隊列就立即返回



3、按照契約,task 的 get 方法會等待task執行結束,要麼帶回結果,要麼帶回異常



4、invoke方法 = execute + get 合體




PS : 當然,既然是 ForkJoinPool,就避免不了去說 task 的 fork 和 join 方法,自己看一下:





語義層面,fork把自己重新調度執行,join 等待 task 結束,和 get 類似。


有時間可以看看JDK的代碼,注釋很清晰。我個人推薦 ForkJoinPool,畢竟是產生在多核時代的產品,會清晰易用一些。




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.