亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java進程和線程該怎么理解

發布時間:2022-01-12 15:44:58 來源:億速云 閱讀:146 作者:iii 欄目:大數據

這篇“java進程和線程該怎么理解”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“java進程和線程該怎么理解”文章吧。

一、進程和線程的含義  


進程:進程是擁有資源的基本單位。

線程:線程是CPU調度的基本單位。


二、舉個例子


? 比如我們手機有兩個進程要進行,一個是便簽,另一個是絕地求生。


? 便簽進程運行要打開保存文本的文件,這里的“打開文件”我們就叫它資源;絕地求生進程要通過監聽用戶按鍵事件,這里的“監聽用戶按鍵事件”叫做它的資源。


? 我們都知道便簽軟件有自動保存的功能這個功能在t1線程中執行,用戶編輯文本在t2線程中執行;絕地求生假設也有兩個線程t3和t4,t3線程負責QE 歪頭,t4線程負責開槍。上邊我所給出的概念是『線程是CPU調度的基本單位』CPU在調度的時的基本單位不是打開便簽和絕地求生兩個進程,而是t1、t2、t3、t4四個線程。


圖解:

java進程和線程該怎么理解         


★ 注意:一個進程至少要有一個線程


? 如果一個進程沒有多線程,你玩絕地求生的時候怎么能邊歪頭邊射擊呢?單線程只能干一件事,事件不能并發進行,浪費 CPU 資源。所謂的多進程就是絕地求生運行在后臺的同時,你使用便簽進行文字記錄。進程是一個軟件在運行,線程就是執行進程中的線程代碼片段。


三、線程池


概念:


 ① 有了多線程編程為何還要引進線程池的概念呢?


線程池對于我們開發者創建來說很簡單方便,但是對服務器來說負擔很沉重,每個用戶請求登錄軟件都要開啟一個線程,創建的線程就會很多,你想想那么多的線程去競爭 CUP 資源,持續切換,這個 CUP 的調度不是要累死的節奏嗎?為了解決這個問題,就引進了線程池的概念,通過線程池提前創建一定數量的線程,不用等任務來了在創建,提前創建線程的作用就是當系統有任務來了之后就直接去執行任務。如果有任務來了,線程池的線程就會去執行任務,執行完后不銷毀直接回到線程池等待執行下一個任務。我們所說的線程就是代碼的執行,動態創建的。


② 線程的創建是通過 .start 開啟的,一旦開啟線程就會自動執行 run 方法。那么一個新的問題來了,任務還沒來呢?提前創建一個線程之后直接執行 run 方法了。


其實線程池還有重要的一點,就是當線程池剛創建時,讓其進入堵塞狀態,等待系統任務的到來;如果任務來了,我們就把第一位線程同學叫醒拿著老師的任務去干活。


③ 怎么讓線程池進入堵塞狀態呢?


BlockingQueu 作為線程容器,可以為線程同步提供有力的保障。BlockingQueue 很容易理解,它就是一個容器,用來存放系統的任務的。線程池的線程調用它的 take() 方法取出任務進行執行,如果 BlockingQueue 沒有可執行任務,該線程就會阻塞;該線程可以通過調用 put 方法放入任務,如果任務滿了線程也會阻塞。


圖解:

java進程和線程該怎么理解      



就是說在線程池中的每個 Run 方法中都要有一個循環判斷  BlockingQueue 有沒有可執行的任務,如果有就去執行,執行完回來再 BlockingQueue 中繼續獲取任務,如果 BlockingQueue 沒有可執行任務了,線程就處于阻塞等待狀態。

以上就是關于“java進程和線程該怎么理解”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

麻阳| 栾川县| 东明县| 霍林郭勒市| 通江县| 洛扎县| 漾濞| 云阳县| 夏津县| 高邑县| 错那县| 东山县| 甘泉县| 山东省| 汽车| 米易县| 宜良县| 晋城| 开封县| 淅川县| 广汉市| 祁阳县| 册亨县| 体育| 平凉市| 陕西省| 搜索| 托克逊县| 中宁县| 郧西县| 广宗县| 宁晋县| 井研县| 永新县| 马龙县| 义乌市| 梨树县| 凤庆县| 从化市| 澄江县| 岳普湖县|