亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

圖解分析Javaweb進(jìn)程與線程

 更新時(shí)間:2022年03月02日 15:12:45   作者:/少司命  
這篇文章主要介紹了Javaweb進(jìn)程與線程的知識(shí),本篇文章通過簡(jiǎn)要的案例,講解了它的基礎(chǔ)原理與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

一、認(rèn)識(shí)進(jìn)程

1,線程初識(shí)

一個(gè)可執(zhí)行程序運(yùn)行起來,就可以看作是一個(gè)進(jìn)程

進(jìn)程也是操作系統(tǒng)分配資源的最小單元

一個(gè)進(jìn)程在內(nèi)核中都會(huì)對(duì)應(yīng)一個(gè)PCB對(duì)象

一個(gè)線程就是一個(gè) "執(zhí)行流". 每個(gè)線程之間都可以按照順訊執(zhí)行自己的代碼. 多個(gè)線程之間 "同時(shí)" 執(zhí)行 著多份代碼.

2,進(jìn)程屬性

進(jìn)程id:身份表示

一組內(nèi)存指針:指向進(jìn)程運(yùn)行時(shí)依賴的指令和數(shù)據(jù)在內(nèi)存的哪個(gè)位置

進(jìn)程狀態(tài):是正在運(yùn)行,還是正在休眠

進(jìn)程優(yōu)先級(jí):這個(gè)進(jìn)程是優(yōu)先上CPU執(zhí)行還是放在后面上

進(jìn)程的上下文:保存了上次進(jìn)程在CPU上執(zhí)行的進(jìn)度,以便下次進(jìn)程上CPU的時(shí)候能夠繼續(xù)執(zhí)行

進(jìn)程的記賬信息:記錄了進(jìn)程在CPU上一共執(zhí)行了多長(zhǎng)時(shí)間,通過這個(gè)時(shí)間來限制不要讓某個(gè)進(jìn)程霸占CPU太久,導(dǎo)致其他進(jìn)程無法執(zhí)行

從微觀上看,一個(gè)CPU同一個(gè)時(shí)刻只能執(zhí)行一個(gè)線程命令

進(jìn)程太多,CPU太少

通過“并發(fā)”的方式,讓CPU快速調(diào)度,微觀上仍然是串行,但調(diào)度上極快,宏觀上就感覺是多個(gè)進(jìn)程齊頭并進(jìn)

二、為什么要有線程

首先, "并發(fā)編程" 成為 "剛需".

單核 CPU 的發(fā)展遇到了瓶頸. 要想提高算力, 就需要多核 CPU. 而并發(fā)編程能更充分利用多核 CPU 資源. 有些任務(wù)場(chǎng)景需要 "等待 IO", 為了讓等待 IO 的時(shí)間能夠去做一些其他的工作, 也需要用到并發(fā)編程.

其次, 雖然多進(jìn)程也能實(shí)現(xiàn) 并發(fā)編程, 但是線程比進(jìn)程更輕量.

創(chuàng)建線程比創(chuàng)建進(jìn)程更快.

銷毀線程比銷毀進(jìn)程更快.

調(diào)度線程比調(diào)度進(jìn)程更快.

三、認(rèn)識(shí)線程與進(jìn)程的區(qū)別

如果把一個(gè)進(jìn)程看作是一個(gè)工廠,線程就是工廠中的若干流水線

線程其實(shí)包含在進(jìn)程中

一個(gè)進(jìn)程可能有多個(gè)線程

每一個(gè)線程都有一段自己要執(zhí)行的邏輯(命令),每一個(gè)線程都是一個(gè)獨(dú)立的“執(zhí)行流”

同一個(gè)進(jìn)程中的很多線程之間,是共享一些資源

四、Linux中的線程

1,內(nèi)核態(tài)與用戶態(tài)

假如你去銀行存款,得在窗口和柜員交互

存款的過程:

1、先和柜員溝通,要存多少錢,存在那個(gè)賬戶上

2、把卡和錢交給柜員

以上都是能感知的到動(dòng)作,相當(dāng)于代碼在用戶態(tài)執(zhí)行

3、柜員拿到東西在電腦上操作

以上是用戶感知不到的,相當(dāng)于代碼在內(nèi)核態(tài)執(zhí)行

用戶態(tài):權(quán)限相對(duì)比較小,只能進(jìn)行一些低風(fēng)險(xiǎn)的操作

內(nèi)核態(tài):比用戶態(tài)高很多

2,PCB描述線程

 內(nèi)核只認(rèn)識(shí)PCB

一個(gè)線程和一個(gè)PCB對(duì)應(yīng)

一個(gè)進(jìn)程可能有多個(gè)PCB

這三個(gè)PCB就對(duì)應(yīng)了java.exe這個(gè)進(jìn)程的三個(gè)線程,內(nèi)核中也把這若干從屬同一個(gè)進(jìn)程稱為“線程組”,類似于MySql中的多對(duì)一

五、多種類型

以一個(gè)比較形象的例子,吃蘋果,100蘋果分著吃

線程:分配資源,房間+桌子

進(jìn)程:調(diào)度讓小朋友去吃蘋果

1,單進(jìn)程單線程

2,多進(jìn)程單線程

3,單進(jìn)程多線程

4,多進(jìn)程多線程

5,進(jìn)程中線程分析

一個(gè)線程中最多有多少個(gè)線程

1,CPU的個(gè)數(shù)有關(guān)

2,和線程執(zhí)行的任務(wù)的類型也有關(guān)

        CPU密集型:程序一直在執(zhí)行計(jì)算任務(wù)

        IO密集型:主要進(jìn)行輸入輸出的操作

多個(gè)線程去搶奪一個(gè)資源可能造成線程不安全

一個(gè)線程如果出現(xiàn)拋出異常,并且沒有很好的處理這個(gè)異常,整個(gè)進(jìn)程就會(huì)被終止,其他線程無法工作

到此這篇關(guān)于圖解分析Javaweb進(jìn)程與線程的文章就介紹到這了,更多相關(guān)Javaweb 進(jìn)程 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論