欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

1,線程初識

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

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

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

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

2,進(jìn)程屬性

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

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

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

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

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

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

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

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

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

二、為什么要有線程

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

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

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

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

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

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

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

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

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

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

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

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

四、Linux中的線程

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

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

存款的過程:

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

2、把卡和錢交給柜員

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

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

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

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

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

2,PCB描述線程

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

一個線程和一個PCB對應(yīng)

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

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

五、多種類型

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

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

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

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

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

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

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

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

一個線程中最多有多少個線程

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

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

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

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

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

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

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

相關(guān)文章

  • Springboot定時任務(wù)Scheduled重復(fù)執(zhí)行操作

    Springboot定時任務(wù)Scheduled重復(fù)執(zhí)行操作

    這篇文章主要介紹了Springboot定時任務(wù)Scheduled重復(fù)執(zhí)行操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • SpringBoot部署SSL證書(JKS格式)

    SpringBoot部署SSL證書(JKS格式)

    文將介紹如何在Spring Boot應(yīng)用中部署SSL證書,以實現(xiàn)安全傳輸和保護(hù)數(shù)據(jù)隱私,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • 淺談關(guān)于Mybatis的mapper-locations配置問題

    淺談關(guān)于Mybatis的mapper-locations配置問題

    MyBatis 是一款優(yōu)秀的半自動的ORM持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作,需要的朋友可以參考下
    2023-05-05
  • Spring Boot攔截器和過濾器實例解析

    Spring Boot攔截器和過濾器實例解析

    這篇文章主要介紹了Spring Boot攔截器和過濾器實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Springmvc如何實現(xiàn)向前臺傳遞數(shù)據(jù)

    Springmvc如何實現(xiàn)向前臺傳遞數(shù)據(jù)

    這篇文章主要介紹了Springmvc如何實現(xiàn)向前臺傳遞數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • 詳解SpringCloud微服務(wù)架構(gòu)之Hystrix斷路器

    詳解SpringCloud微服務(wù)架構(gòu)之Hystrix斷路器

    本篇文章主要介紹了詳解SpringCloud微服務(wù)架構(gòu)之Hystrix斷路器,Hystrix是一個庫,通過添加延遲容差和容錯邏輯來幫助您控制這些分布式服務(wù)之間的交互,有興趣的可以了解一下
    2018-01-01
  • Spring核心容器之ApplicationContext上下文啟動準(zhǔn)備詳解

    Spring核心容器之ApplicationContext上下文啟動準(zhǔn)備詳解

    這篇文章主要介紹了Spring核心容器之ApplicationContext上下文啟動準(zhǔn)備詳解,ApplicationContext 繼承自 BeanFactory ,其不僅包含 BeanFactory 所有功能,還擴(kuò)展了容器功能,需要的朋友可以參考下
    2023-11-11
  • 代碼實例Java IO判斷目錄和文件是否存在

    代碼實例Java IO判斷目錄和文件是否存在

    本篇文章給大家分享了Java IO判斷目錄和文件是否存在的代碼,對此有需要的讀者們可以跟著小編一起學(xué)習(xí)下。
    2018-02-02
  • SpringBoot在RequestBody中使用枚舉參數(shù)案例詳解

    SpringBoot在RequestBody中使用枚舉參數(shù)案例詳解

    這篇文章主要介紹了SpringBoot在RequestBody中使用枚舉參數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • IDEA SpringBoot項目配置熱更新的步驟詳解(無需每次手動重啟服務(wù)器)

    IDEA SpringBoot項目配置熱更新的步驟詳解(無需每次手動重啟服務(wù)器)

    這篇文章主要介紹了IDEA SpringBoot項目配置熱更新的步驟,無需每次手動重啟服務(wù)器,本文通過圖文實例代碼相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04

最新評論