13 執行緒池的實際操作

2021-09-27 03:26:27 字數 1082 閱讀 6950

執行緒池一般就是這麼用的

public static void main(string args) 

});try catch (interruptedexception | executionexception e)

}

也就是說 submit 乙個任務,然後用 future 物件來非同步獲取結果

幾個類和介面的繼承關係是

executor <— executorservice <— abstractexecutorservice <— threadpoolexecutor

而建立執行緒池的時候使用的其實就是 threadpoolexecutor

public static executorservice newfixedthreadpool(int nthreads)

進入 submit 方法是這樣的

public futuresubmit(callabletask)
可以看到 submit 方法其實是給 execute 方法套了乙個殼子,然後返回乙個 future 物件,所以重點還是要看 execute 方法

在了解將任務提交給執行緒池到任務執行完畢整個過程之前,我們先來看一下 threadpoolexecutor 類中其他的一些比較重要成員變數

public class threadpoolexecutor extends abstractexecutorservice

接下來看 execute 方法

public void execute(runnable command) 

// 情況二:向阻塞佇列中新增

if (isrunning(c) && workqueue.offer(command))

// 情況三:試圖開執行緒,看看是否超過最大執行緒池,失敗了執行拒絕策略

else if (!addworker(command, false))

reject(command);

}

這裡面 addworker 會開新執行緒

EOS實際操作

ref sudo apt get install clang 4.0 lldb 4.0 libclang 4.0 dev cmake make libbz2 dev libssl dev libg dev autotools dev build essential libbz2 dev libicu...

cvtColor 實際操作

cvtcolor 函式用於實現影象的色彩空間轉換,一般包括四個引數,cvtcolor src,dst,type,channels 即源影象,目標影象,轉換方式,目標影象通道數,有時候在應用時會選擇將dst設定和src相同,即實現原圖的轉換,需要注意在這個過程中,並不是在src的資料矩陣中直接進行修改...

Android Canvas實際操作

本篇我們來看canvas的實際應用,這裡會應用到屬性動畫valueanimator類,下面先看一下具體的效果 上述效果圖中主要由三部分組成,第一,繪製6個小球並旋轉,第二,6個小球先擴充套件然後收縮,第三,水波紋效果,展示一張。1 旋轉部分 首先,將6個小球分別繪製到螢幕上,呼叫 canvas.dr...