日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java的知识点24——多线程技术理论——程序、进程、线程

發布時間:2025/4/16 java 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java的知识点24——多线程技术理论——程序、进程、线程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

多線程技術

三高:高可用、高性能、高并發

基本概念:多線程是Java語言的重要特性,大量應用于網絡編程服務器端程序的開發,最常見的UI界面底層原理操作系統底層原理都大量使用了多線程。

我們可以流暢的點擊軟件或者游戲中的各種按鈕,其實,底層就是多線程的應用。UI界面的主線程繪制界面,如果有一個耗時的操作發生則啟動新的線程,完全不影響主線程的工作。當這個線程工作完畢后,再更新到主界面上。

我們可以上百人、上千人、上萬人同時訪問某個網站,其實,也是基于網站服務器的多線程原理。如果沒有多線程,服務器處理速度會極大降低。

多線程 (多個CPU、多核) 在程序中,在進程中開辟的多線程

方法間調用:普通方法調用,從哪里來到哪里去,閉合的一條路徑

多線程使用:開辟了多條路徑

在操作系統中運行中的程序就是進程,如“看視頻”

一個進程可以有多個線程,如視頻中同時聽聲音、看圖像、顯示字幕

程序:程序(Program)”是一個靜態的概念,一般對應于操作系統中的一個可執行文件。

? ? ? ? ? ?比如:我們要啟動酷狗聽音樂,則對應酷狗的可執行程序。

? ? ? ? ? 當我們雙擊酷狗,則加載程序到內存中,開始執行該程序,于是產生了“進程”。

?進程:執行中的程序叫做進程(Process),是一個動態的概念。現代的操作系統都可以同時啟動多個進程。

? ? ? ? ? 進程的特點:1. 進程是程序的一次動態執行過程占用特定的地址空間

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2. 每個進程由3部分組成:cpu、data、code。每個進程都是獨立的,保有自己的cpu時間,代碼和數據,即便用同一個程序產生好幾個進程,它們之間還是擁有自己的這3樣東西,這樣的缺點是:浪費內存,cpu的負擔較重

? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? 3. 多任務(Multitasking)操作系統將CPU時間動態地劃分給每個進程,操作系統同時執行多個進程,每個進程獨立運行。以進程的觀點來看,它會以為自己獨占CPU的使用權。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4. 進程的查看? Windows系統: Ctrl+Alt+Del,啟動任務管理器即可查看所有進程。

?


線程

一個進程可以產生多個線程。同多個進程可以共享操作系統的某些資源一樣,同一進程的多個線程也可以共享此進程的某些資源(比如:代碼、數據),所以線程又被稱為輕量級進程(lightweight process)。

? ? ? 1. 一個進程內部的一個執行單元,它是程序中的一個單一的順序控制流程

? ? ??2. 一個進程可擁有多個并行的(concurrent)線程。

? ? ??3. 一個進程中的多個線程共享相同的內存單元/內存地址空間,可以訪問相同的變量和對象,而且它們從同一堆中分配對象并進行通信、數據交換和同步操作。

? ? ??4. 由于線程間的通信是在同一地址空間上進行的,所以不需要額外的通信機制,這就使得通信更簡便而且信息傳遞的速度也更快。

? ? ??5. 線程的啟動、中斷、消亡,消耗的資源非常少。



線程和進程的區別

? ? ? 1. 每個進程都有獨立的代碼和數據空間(進程上下文),進程間的切換會有較大的開銷。

? ? ??2. 線程可以看成是輕量級的進程,屬于同一進程的線程共享代碼和數據空間,每個線程有獨立的運行棧程序計數器(PC),線程切換的開銷小。

? ? ??3. 線程和進程最根本的區別在于:進程是資源分配的單位線程是調度和執行的單位

? ? ??4. 多進程: 在操作系統中能同時運行多個任務(程序)。

? ? ??5. 多線程: 在同一應用程序中有多個順序流同時執行。

? ? ??6. 線程是進程的一部分,所以線程有的時候被稱為輕量級進程

? ? ??7. 一個沒有線程的進程是可以被看作單線程的,如果一個進程內擁有多個線程,進程的執行過程不是一條線(線程)的,而是多條線(線程)共同完成的。

? ? ??8. ?系統在運行的時候會為每個進程分配不同的內存區域,但是不會為線程分配內存(線程所使用的資源是它所屬的進程的資源),線程組只能共享資源。那就是說,除了CPU之外(線程在運行的時候要占用CPU資源),計算機內部的軟硬件資源的分配與線程無關,線程只能共享它所屬進程的資源。



進程與程序的區別

? 程序一組指令的集合,它是靜態的實體,沒有執行的含義。

? 進程是一個動態的實體,有自己的生命周期

? 進程是程序的一部分,程序運行的時候會產生進程。

總結

以上是生活随笔為你收集整理的Java的知识点24——多线程技术理论——程序、进程、线程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。