說一下 jdk7 的 ForkJoinPool

2021-07-23 06:18:39 字數 1407 閱讀 8856

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,畢竟是產生在多核時代的產品,會清晰易用一些。

jdk6和jdk7的區別

substring jdk6 string是通過字元陣列實現的。在jdk 6 中,string類包含三個成員變數 char value,int offset,int count。他們分別用來儲存真正的字元陣列,陣列的第乙個位置索引以及字串中包含的字元個數。當呼叫substring方法的時候,會建立乙...

JDK6和JDK7中的substring 方法

substring int beginindex,int endindex 方法在jdk6和jdk7中是不同的。明白它們之間的差別可以幫助我們更好的使用這個方法。為了簡單起見,下面使用substring 代替substring int beginindex,int endindex substrin...

JDK7與JDK8的新特性

看完了官方文件,總結一下新特性,防止面試的時候被問到,附官方說明位址 jdk新特性官方文件 jdk7 主要的 1 二進位制可以用來表示整數型別,用0b 0b也行,不區分大小寫 開頭 比如 int a 0b00000000000000000000000000000111 等價於以前的int a 7 2...