【多路通信】進程、線程、線程池

wait

sleep

join

yield

線程

是操作系統(tǒng)能夠進行運算調(diào)度的最小單位,它被包涵在進程之中,是行程中的實際運作單位。一條線程是進程中一個有序的事件流,一個進程中可以并行多條線程,每條線程并行執(zhí)行不同的任務。

進程

進程是指運行中的應用程序,每一個進程都有自己獨立的內(nèi)存空間。一個應用程序可以同時啟動多個進程。

(是一個正在執(zhí)行的程序;計算機中正在運行的程序?qū)嵗豢梢苑峙浣o處理器并由處理器執(zhí)行的一個實體;由單一順序的執(zhí)行顯示,一個當前狀態(tài)和一組相關的系統(tǒng)資源所描述的活動單元)

進程和線程的主要區(qū)別

每個進程都需要操作系統(tǒng)為其分配獨立的內(nèi)存地址空間,而同一進程中的所有線程在同一塊地址空間中工作,這些線程可以共享同一塊內(nèi)存和系統(tǒng)資源,比如共享一個對象或者共享已經(jīng)打開的一個文件。

線程池

創(chuàng)建多個線程不光麻煩而且相對影響系統(tǒng)性能。

背景(為什么用)

在面向?qū)ο缶幊讨?,?chuàng)建和銷毀對象是很費時間的,因為創(chuàng)建一個對象要獲取內(nèi)存資源或者其它更多資源。在Java中更是如此,虛擬機將試圖跟蹤每一個對象,以便能夠在對象銷毀后進行垃圾回收。所以提高服務程序效率的一個手段就是盡可能減少創(chuàng)建和銷毀對象的次數(shù),特別是一些很耗資源的對象創(chuàng)建和銷毀。如何利用已有對象來服務就是一個需要解決的關鍵問題,其實這就是一些"池化資源"技術(shù)產(chǎn)生的原因。比如大家所熟悉的數(shù)據(jù)庫連接池正是遵循這一思想而產(chǎn)生的,本文將介紹的線程池技術(shù)同樣符合這一思想。

優(yōu)點

1)避免線程的創(chuàng)建和銷毀帶來的性能開銷。

2)避免大量的線程間因互相搶占系統(tǒng)資源導致的阻塞現(xiàn)象。

3)能夠?qū)€程進行簡單的管理并提供定時執(zhí)行、間隔執(zhí)行等功能。

組成部分

1、線程池管理器(ThreadPoolManager):用于創(chuàng)建并管理線程池

2、工作線程(WorkThread): 線程池中線程

3、任務接口(Task):每個任務必須實現(xiàn)的接口,以供工作線程調(diào)度任務的執(zhí)行。

4、任務隊列:用于存放沒有處理的任務。提供一種緩沖機制。

功能

應用程序可以有多個線程,這些線程在休眠狀態(tài)中需要耗費大量時間來等待事件發(fā)生。其他線程可能進入睡眠狀態(tài),并且僅定期被喚醒以輪循更改或更新狀態(tài)信息,然后再次進入休眠狀態(tài)。為了簡化對這些線程的管理,一個線程池有若干個等待操作狀態(tài),當一個等待操作完成時,線程池中的輔助線程會執(zhí)行回調(diào)函數(shù)。線程池中的線程由系統(tǒng)管理,我們就不需要費力于線程管理,可以集中精力處理應用程序任務。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • (二)我遇到你的時間遲到了 2. 、小伙伴 日子一天天的過著,除了學習,也沒覺得有什么樂趣。在那個教學樓里,...
    慵懶的小蟲子閱讀 263評論 0 1
  • Android Studio 是目前開發(fā)Android的不二之選,2.0以后超級好用,虛擬機比以前快多了,不過我還...
    進擊的包籽閱讀 1,653評論 0 18
  • 春節(jié)回家,與父母討論過,也親眼目睹了家里面小朋友的生活和學習習慣,發(fā)現(xiàn)受到家庭影響,尤其是父母的影響,太大。 現(xiàn)在...
    小多媛媛閱讀 364評論 2 1
  • 感恩孩子們放假對我的耐心檢驗,哈哈,真的是像炮仗,動不動就可能被仨熊孩子點著引爆啊。一點也不夸張。孩子們在家那是真...
    寸心潔白閱讀 210評論 0 4

友情鏈接更多精彩內(nèi)容