概念
多執行緒:是指從軟體或者硬體上實現多個執行緒併發執行的技術,多執行緒包括軟體多執行緒和硬體多執行緒。
軟體多執行緒:即便處理器只能執行乙個執行緒,作業系統也可以通過快速的在不同執行緒之間進行切換,由於時間間隔很小,來給使用者造成一種多個執行緒同時執行的假象。
程序:是指計算機中已執行的程式.
並行:並列執行,多個cpu下支援
併發:多個任務請求執行,cpu輪流交替執行
程序和執行緒區別:乙個應用程式啟動乙個程序,乙個程序可以有多個執行緒
多執行緒優點:程式執行速度快、執行程式可以後台執行、提高響應效果
執行緒池:物件導向程式設計中,建立和銷毀物件是很費時間的,因為建立乙個物件要獲取記憶體資源或者其它更多資源。執行緒池維護著多個執行緒,等待著監督管理者分配可併發執行的任務。這避免了在處理短時間任務時建立與銷毀執行緒的代價。
執行緒池的建立方式:
§executors.newfixedthreadpool(int nthreads);
通過傳入的
int型別引數來指定建立執行緒池中的執行緒數,如果任務數量大於執行緒數量,則任務會進行等待。
§executors.newcachedthreadpool();
會根據需要建立新執行緒的執行緒池,如果執行緒池中的執行緒數量小於任務數時,會建立新的執行緒,執行緒池中的執行緒最大數量是
integer.max_value
,int
型別的最大值。如果執行緒的處理速度小於任務的提交速度時,會不斷建立新的執行緒來執行任務,這樣有可能會因為建立過多執行緒而耗盡
cpu
和記憶體資源。
§executors.newfixedthreadpool(int nthreads);
通過傳入的
int型別引數來指定建立執行緒池中的執行緒數,如果任務數量大於執行緒數量,則任務會進行等待。
§executors.newcachedthreadpool();
會根據需要建立新執行緒的執行緒池,如果執行緒池中的執行緒數量小於任務數時,會建立新的執行緒,執行緒池中的執行緒最大數量是
integer.max_value
,int
型別的最大值。如果執行緒的處理速度小於任務的提交速度時,會不斷建立新的執行緒來執行任務,這樣有可能會因為建立過多執行緒而耗盡
cpu
和記憶體資源。
原子性:即乙個操作或多個操作執行過程中不會被任何因素打斷
例如:
1int x = 1;//
原子性2
int y = x;//
讀取x,賦值y,非原子性
3 x++;//
讀取x,自增1,非原子性
4 x = x + 1;//
讀取x,加1,非原子性
多執行緒的概念
多執行緒的好處在於可以提高cpu的利用率 任何乙個程式設計師都不希望自己的程式很多時候沒事可幹,在多執行緒程式中 乙個執行緒必須等待的時候,cpu可以執行其它的執行緒而不是等待,這樣就大大提高了程式的效率。然而我們也必須認識到執行緒本身可能影響系統效能的不利方面,以正確使用執行緒 執行緒也是程式,所...
多執行緒同步概念
不管是多執行緒還是多程序,涉及到共享相同的記憶體時,需要確保好同步問題。對執行緒來說,需要確保每個執行緒看到一致的資料檢視。如果每個執行緒使用的變數都是其他執行緒不會讀取和修改的,那麼就不存在一致性問題,同樣的,如果變數是唯讀的,多個執行緒同時讀取該變數也不會有一致性問題。但是如果其中的某個執行緒去...
多執行緒的概念
資料請求 文字資料 其他資料 用多個執行緒完成乙個任務,任務分成多個小模組,每個執行緒去完成各自的模組。執行緒 完成某一任務的程式 塊,可以建立執行緒 停止執行緒 中斷執行緒等操作。型別 主線程 子執行緒 主線程 在應用程式啟動時,隨著程序的建立而產生的執行緒,這個執行緒稱之為主線程。用於引導程式必...