Java 併發學習

一、創建任務

 

任務可以理解爲一段獨立執行的代碼,它完成一定的功能。

Java 5及以上版本中不僅可以利用 Runnable接口,還可以利用Callable接口。

    兩種任務的區別:Runnable run()方法完成的任務是沒有返回值的 - void

    Callable call()方法完成的任務是有返回值的 - 返回值 有接口的泛型<V> 來制定

 

二、執行任務

 

通過java.util.concurrent.ExecutorService接口對象來執行任務,

這個接口對象由工具類java.util.concurrent.Executors的靜態方法來創建。

 

相關類及接口說明:

Executors       提供建立線程池或線程工廠的方法.

ExecutorService           提供了管理終止的方法,以及可爲跟蹤一個或多個異步任務執行狀況而生成 Future 的方法。

Executor                可以簡單理解爲一個線程的執行者,是Executors 的上一級接口。

Callable         線程要執行而去實現的接口

 

Future                  表示異步計算的結果,對執行的線程的狀態檢查,可以獲得執行結果.

下面以一個例子來說明: 

 

 

 

 

查看輸出:

 

看線程的名字都是類似於“pool-1-thread-4” 的字符串,可是爲什麼最大的索引是5呢?

對了,這裏就與線程池中維護的線程數量有關了 當你改變線程池的大小時,這裏的數據時會跟着變的,

 

service.submit(Callable callable)是來運行 Callable類型的任務,也可運行Runnable類型的任務

service.execute(Runnable runnable)只能用來運行 Runnable類型的任務

     注:這個execute方法是其父藉口java.util.concurrent.Execute中的一個方法

 

 

大家也可以試試

ExecutorService service = Executors.newCachedThreadPool();

看輸出的名字Thread名字會有什麼變化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章