執行緒池中submit與execute的區別

2021-10-06 21:54:09 字數 1295 閱讀 1632

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 但是這種方式下,主線程無法捕獲子...