executorservice executorservice = executors.
newcachedthreadpool()
;//呼叫execute()
executorservice.
execute((
)->
system.out.
println
("執行execute方法!"))
;//呼叫submit()
executorservice.
submit((
)->
system.out.
println
("執行submit方法!"))
;
底層實現:無論是呼叫了以下的那兩個方法,底層都是呼叫了execute()
//從呼叫的方法上看出,execute()沒有返回值,submit()是有返回值的
public
inte***ce
executorservice
extends
executor
public
inte***ce
executor
//從這個方法中可以這連個方法的本質區別
public
abstract
class
abstractexecutorservice
implements
executorservice
}
下面看一下執行緒池底層類之間的關係:
executorservice->threadpoolexecutor->abstractexecutorservice->executorservice ->executor
public
static executorservice newcachedthreadpool()
public
class
threadpoolexecutor
extends
abstractexecutorservice
public
abstract
class
abstractexecutorservice
implements
executorservice
public
inte***ce
executorservice
extends
executor
執行緒池 execute與submit的區別
在使用執行緒池的時候,看到execute 與submit 方法。都可以使用執行緒池執行乙個任務,但是兩者有什麼區別呢?void execute runnable command futuresubmit callabletask futuresubmit runnable task,t result...
執行緒池中的柵欄
多執行緒中有三個類,分別是countdownlatch,cyclicbarrier,semaphore。代表著執行緒中的柵欄。共享鎖。在一組執行緒中,乙個執行緒等待其他執行緒。我把它理解為門栓。檢視該類的資料結構圖如下圖一 圖一 有乙個靜態的內部類,sync繼承自aqs。使用例子 如下 classn...
執行緒池中捕獲執行緒執行異常
在專案中使用執行緒池時,使用了如下方式 executorservice datauploadpool executors.newfixedthreadpool writethreadnum datauploadpool.execute new thread task 但是這種方式下,主線程無法捕獲子...