如果我們要新建立乙個執行緒來執行任務,那麼一般我們的**會是這樣:
new thread
( new runnable )
.start()
;
一般是實現runnable介面或者繼承thread。
從jdk從1.5開始為我們提供了乙個callable介面
* @see executor
* @since 1.5
* @author doug lea
* @param the result type of method */
@functionalinte***ce
public inte***ce callable
該介面只又乙個方法call(),特別要注意的是該方法是有返回值的。
總體來講,callable和runnable一樣都是供我們來建立執行緒執行任務的,不同之處在於callable有返回值,而runnable沒有返回值。也就是說callable和runnable都是乙個任務,用來被執行。(callable專為執行緒池設計 ps:forkjoinpool)
* @since 1.5
* @author doug lea */
public inte***ce executor implementation.
** @param command the runnable task
* @throws rejectedexecutionexception if this task cannot be
* accepted for execution
* @throws nullpointerexception if command is null
*/void
execute
(runnable command)
;}
executor中文意思執行器,它只有乙個execute方法用來執行runnable任務。
所以executor就是用來專門執行任務的執行器。jdk為我們提供了乙個executorservice
public inte***ce executorservice extends executor
executorservice繼承了executor介面,並且進行了增強。提供了一系列執行緒執行生命週期的方法和submit方法。
submit
future
submit
(callable task)
;
該方法可以執行乙個runnable任務,並且有乙個返回值。返回型別為future。
future 未來。表示乙個runnable在執行結束後返回的值。future就是用來接收callable介面執行結束後返回的值的。
public abstract class abstractexecutorservice implements executorservice
jdk為我們提供了乙個executorservice實現類,不過我們一般使用threadpoolexecutor來建立我們自己的執行緒池。
public class threadpoolexecutor extends abstractexecutorservice
執行緒池系列 一 執行緒池簡介
執行緒池主要解決了倆個問題 一是避免了頻繁建立銷毀執行緒所帶來的開銷,達到了執行緒復用的目的 二是執行緒池提供了一種資源限制和管理的手段,使用者可以通過一些引數來定製化執行緒 public class threadpoolexecutor extends abstractexecutorservic...
Linux 高併發執行緒池
1 多程序方案 隨著客戶端的增加,連線成功後,為每個客戶端分配乙個程序,子程序繼承與客戶端互動的socket 父程序完成連線,子程序負責業務處理 父程序下發任務 2 多程序伺服器模型,每個普通執行緒自身accept建立連線,主控執行緒 執行緒建立,任務指定,執行緒 多執行緒同時accpet阻塞等待連...
併發 執行緒池
學習 1.先大綱,然後思路優先 適當的提出問題 2.合理推測 完成上述需要知識,為了熟悉執行緒池,提出一些問題 1.執行緒什麼時候建立?2.執行緒池主要做什麼?3.無任務執行處於什麼狀態?4.提交乙個任務,執行邏輯?5.執行緒池怎樣被銷毀?回答問題 1.執行緒在執行 excute方法 中,做系列判斷...