Java併發程式設計類學習三(執行緒的執行)

2021-07-09 04:14:03 字數 1424 閱讀 4740

任務執行的執行器。可以解耦任務提交和計算的過程。換句話說,只管提交給執行器執行,而不用關係執行的內部過程。

任務被提交後是立即執行的。

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 執行緒棧,用於維護執行緒執行時所需的所有函式引數和區域性變數。執行緒只有乙個核心物件和乙個棧,執行緒描述了程序內部的一條執行線路,每次初始化執行緒時,系統都會建立乙個主線程。系統從程序的位址空間中分配記憶體給執行緒棧使用,新執...