二、執行緒池(executors)
三、callable
程序:
執行緒:
執行緒與程序的區別
分時排程
搶占式排程
同步:排隊執行,效率低,但是安全
非同步:同時執行,效率高,但是資料不安全。
併發:指兩個或多個事件在同乙個時間段內發生
並行:指兩個或多個事件在同一時刻發生(同時發生)
如果併發的執行緒數量很多,並且每個執行緒都是執行乙個時間很短的任務就結束了,這樣頻繁建立執行緒 就會大大降低系統的效率,因為頻繁建立執行緒和銷毀執行緒需要時間. 執行緒池就是乙個容納多個執行緒的容器,池中的執行緒可以反覆使用,省去了頻繁建立執行緒物件的操作,節省了大量的時間和資源。
/*** 快取執行緒池.
* (長度無限制)
* 執行流程:
* 1. 判斷執行緒池是否存在空閒執行緒
* 2. 存在則使用
* 3. 不存在,則建立執行緒 並放入執行緒池, 然後使用
*/ executorservice service = executors.
newcachedthreadpool()
;//向執行緒池中 加入 新的任務
service.
execute
(new
runnable()
}); service.
execute
(new
runnable()
}); service.
execute
(new
runnable()
});
/*** 定長線程池.
* (長度是指定的數值)
* 執行流程:
* 1. 判斷執行緒池是否存在空閒執行緒
* 2. 存在則使用
* 3. 不存在空閒執行緒,且執行緒池未滿的情況下,則建立執行緒 並放入執行緒池, 然後使用
* 4. 不存在空閒執行緒,且執行緒池已滿的情況下,則等待執行緒池存在空閒執行緒
*/executorservice service = executors.
newfixedthreadpool(2
); service.
execute
(new
runnable()
}); service.
execute
(new
runnable()
});
// 效果與定長線程池 建立時傳入數值1 效果一致.
/*** 單執行緒執行緒池.
* 執行流程:
* 1. 判斷執行緒池 的那個執行緒 是否空閒
* 2. 空閒則使用
* 4. 不空閒,則等待 池中的單個執行緒空閒後 使用
*/ executorservice service = executors.
newsinglethreadexecutor()
; service.
execute
(new
runnable()
}); service.
execute
(new
runnable()
});
public
static
void
main
(string[
] args)
},5,timeunit.seconds);
*//** * 週期執行
* 引數1. runnable型別的任務
* 引數2. 時長數字(延遲執行的時長)
* 引數3. 週期時長(每次執行的間隔時間)
* 引數4. 時長數字的單位
*/ service.
scheduleatfixedrate
(new
runnable()
},5,
2,timeunit.seconds)
;}
介面定義
//callable介面
public
inte***ce
callable
//runnable介面
public
inte***ce
runnable
1. 編寫類實現callable介面 , 實現call方法
class
***implements
callable
}2. 建立futuretask物件 , 並傳入第一步編寫的callable類物件
futuretask
future =
newfuturetask
<
>
(callable)
;4. 通過thread,啟動執行緒
newthread
(future)
.start()
;
callalble介面支援返回執行結果,需要呼叫futuretask.get()得到,此方法會阻塞主程序的繼續往下執行,如果不呼叫不會阻塞。
多執行緒技術 一 執行緒概述
程序 是應用程式的乙個執行例程,是應用程式的一次動態執行過程。執行緒 是程序中的乙個執行單元 是作業系統分配cpu時間的基本單元。windows是乙個支援多執行緒的系統。乙個程序可以包含若干個執行緒。多執行緒的概念 多執行緒 在同一時間執行多個任務的功能,稱為多執行緒或自由執行緒。多執行緒的優點 可...
多執行緒整理01 多執行緒概述
什麼是程式?程式是一段由作業系統執行的 什麼是程序?程序是程式執行的過程,或者說正在被執行的一道程式,乙個程序由乙個或者多個執行緒組成 什麼是執行緒?執行緒是程序的執行部分,每個執行緒都有各自的堆疊空間,堆疊是私有的,而執行緒共享程序內的其他資源 什麼是併發和並行 併發 如果只有單個cpu的話,程式...
android 多執行緒概述
android多執行緒,一直是乙個麻煩的事情,要掌握它的本質,我們需要搞清楚乙個問題,linux多執行緒的本質。了解linux的歷程,了解android的非同步任務機制,了解android的多步任務。說到linux的多執行緒,我們要比較windows與linux的多執行緒的模型。windows執行緒...