多執行緒技術概述

2021-10-20 19:56:12 字數 2680 閱讀 7074

二、執行緒池(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執行緒...