任務執行的執行器。可以解耦任務提交和計算的過程。換句話說,只管提交給執行器執行,而不用關係執行的內部過程。
任務被提交後是立即執行的。
public
inte***ce executor
executorservice繼承了executor介面。提供了管理任務終止的功能,並且能生成future跟蹤任務非同步執行的結果。
呼叫shutdown方法後,將繼續執行之前提交的任務直到完成,但是拒絕任務的提交。submit()方法擴充套件了execute方法,任務提交後提供future返回,可以通過返回future控制任務的生命週期。invokeany和invokeall適合大批量的提交。
public
inte***ce
executorservice
extends
executor
乙個thread生成的工廠介面,代替用構造器建立thread,可以靈活的按自己需求建立thread的子類。
public
inte***ce threadfactory
defaultthreadfactory是threadfactory介面的預設實現。其中用到了原子變數類來生成執行緒名。
static
class
defaultthreadfactory
implements
threadfactory
public thread newthread(runnable r)
}
public
class
threadpoolexecutor
extends
abstractexecutorservice
executorcompletionservice是completionservice介面的實現。內部採用了blockingqueue來儲存執行結果的future,blockingqueue是個阻塞佇列,可以很好處理併發問題。
在構造executorcompletionservice的時候,必須傳入executor,內部任務的執行還是依賴executor。
public
class
executorcompletionservice
implements
completionservice
} catch (interruptedexception ex) }}
class emptyingloop implements runnable
} catch (interruptedexception ex) }}
void start()
} }
併發程式設計(三)執行緒安全性
常見問題 共享資源是否有多個執行緒同時訪問 希望結果跟預期的一致 作用 保證共享資源的可見性 如何保證可見性 hsdis工具 通過反編譯可以看到多了乙個彙編lock指令,相當於下面說的記憶體屏障的功能 硬體層面 cpu的快取記憶體 分為l1 指令快取 l2 資料快取 l3 效能逐步下降 為了最大化利...
三線程併發 依次打出A B C
class deadlock implements runnable static string tag a string tmptag public int flag 1 string ch static object o1 new object o2 new object public void...
Windwos核心程式設計 (三)執行緒
執行緒有兩個組成部分 1 執行緒的核心物件,作業系統用它來管理執行緒 2 執行緒棧,用於維護執行緒執行時所需的所有函式引數和區域性變數。執行緒只有乙個核心物件和乙個棧,執行緒描述了程序內部的一條執行線路,每次初始化執行緒時,系統都會建立乙個主線程。系統從程序的位址空間中分配記憶體給執行緒棧使用,新執...