執行緒池是一種多執行緒處理形式,處理過程中將任務新增到佇列,然後在建立執行緒後執行,主要實現:建立執行緒和管理執行緒,並且給執行緒分配任務。執行緒池中的執行緒是併發執行的。
乙個比較簡單的執行緒池至少應包含執行緒池管理器、工作執行緒、任務列隊、任務介面等部分。
其中執行緒池管理器的作用是建立、銷毀並管理執行緒池,將工作執行緒放入執行緒池中;
工作執行緒是乙個可以迴圈執行任務的執行緒,在沒有任務是進行等待;
任務列隊的作用是提供一種緩衝機制,將沒有處理的任務放在任務列隊中;
任務介面是每個任務必須實現的介面,主要用來規定任務的入口、任務執行完後的收尾工作、任務的執行狀態等,工作執行緒通過該介面排程任務的執行。
執行緒池管理器至少有下列功能:建立執行緒池,銷毀執行緒池,新增新任務。
executor介面:(void execute(runnable command))該介面定義執行runnable任務的方式;
public
inte***ce
executor
threadpoolexecutor類:執行緒池具體實現;
public
class
threadpoolexecutor
extends
abstractexecutorservice
executors類:提供工廠方法用於建立執行緒池,執行緒池工廠類,提供了一系列工廠方法用於建立執行緒池,返回的執行緒池都實現了executorservice介面;
public
class
executors
scheduledexecutorservice定時排程介面
public
inte***ce
scheduledexecutorservice
extends
executorservice
executorservice介面:增加executor的行為,是executor實現類的最直接的介面,該介面定義提供對executor的服務;
public
inte***ce
executorservice
extends
executor
abstractexecutorservice抽象類:
實現executorservice介面,並且提供了一些方法的預設實現,例如submit方法、invokeany方法、invokeall方法。像execute方法、執行緒池的關閉方法(shutdown、shutdownnow等等)就沒有提供預設的實現。
public
abstract
class
abstractexecutorservice
implements
executorservice
protected
runnablefuture
newtaskfor
(callable
callable)
public future<
?>
submit
(runnable task)
public
future
submit
(runnable task, t result)
public
future
submit
(callable
task)
private
t doinvokeany
(collection<
?extends
callable
> tasks,
boolean timed,
long nanos)
throws interruptedexception, executionexception, timeoutexception
public
t invokeany
(collection<
?extends
callable
> tasks)
throws interruptedexception, executionexception
public
t invokeany
(collection<
?extends
callable
> tasks,
long timeout, timeunit unit)
throws interruptedexception, executionexception, timeoutexception
public
list
>
invokeall
(collection<
?extends
callable
> tasks)
throws interruptedexception
public
list
>
invokeall
(collection<
?extends
callable
> tasks,
long timeout, timeunit unit)
throws interruptedexception
}
執行緒 執行緒池
乙個簡單執行緒的建立和銷毀如下 與程序程序相比,執行緒是一種輕量級的工具,但是輕量並不代表沒有,它的建立和關閉依然需要花費時間,如果建立和銷毀的時間還大於執行緒本身完成的工作,那就會得不償失,甚至會造成out of memory。即使沒有,大量的執行緒 也會給gc帶來巨大的壓力。為了解決這樣的問題,...
mysql 執行緒池 c MySQL執行緒池
mysql執行緒池 在麼mysql中,執行緒池指的是用來管理處理mysql客戶端連線任務的執行緒的一種機制。如果把執行緒看做系統資源那麼執行緒池本質上是對系統資源的管理,對應作業系統來說執行緒的建立和銷毀是比較消耗系統資源的,頻繁的建立與銷毀執行緒必然給系統帶來不必要的資源浪費,特別是在高負載的情況...
mysql 執行緒池 Mysql 執行緒池
why 在5.6以前,mysql會對每個連線建立乙個執行緒,請求結束後銷毀執行緒。在高併發的情況下,為了避免頻繁建立和釋放連線,可以通過thread cache將執行緒快取起來,請求來了先嘗試從cache中獲取,重複利用執行緒資源。問題在低併發的情況下,thread cache可以成為乙個有效的優化...