JavaEE之多線程編程:1. 基礎篇

文章目錄

    • 一、關于操作系統
    • 一、認識進程 process
    • 二、認識線程
    • 三、進程和線程的區別(重點!)
    • 四、Java的線程和操作系統線程的關系
    • 五、第一個多線程編程

一、關于操作系統

在這里插入圖片描述

【操作系統】

  • 驅動程序:
    如:我們知道JDBC的驅動程序,就是讓JDBC和各個數據廠商的API進行適配。
    由于硬件設備的種類繁多,廠商也各異。所以硬件廠商在開發硬件的同時會提供驅動電腦裝了對應的驅動,才能讓系統正確識別硬件設備

  • 操作系統內核:
    操作系統的核心功能(管理,對上,對下)。

  • 系統調用:
    操作系統給應用程序提供的API。
    比如:有個程序想操作一下硬件設備,就需要先通過系統調用,把操作命令告訴給系統內核,內核調用驅動程序,進一步的操作硬件設備。

一、認識進程 process

1. 概念
一個運行起來的程序,就是一個“進程”,如果沒運行起來,就不算進程,可以叫做“程序”。進程(process)也可以叫做任務(task)。
進程是操作系統對一個正在運行的程序的一種抽象,換言之,可以把進程看做程序的一次運行過程;
同時,在操作系統內部,進程又是操作系統進行資源分配的基本單位。

2. 進程控制抽象塊(PCB Process Control Block)
計算機內部要管理任何現實事物,都需要將其抽象成一組有關聯的、互為一體的數據。在Java語言中,我們可以通過 類/對象 來描述這一特征。

// 以下代碼是 Java 代碼的偽碼形式,重在說明,無法直接運行
class PCB {// 進程的唯一標識 —— pid;// 進程關聯的程序信息,例如哪個程序,加載到內存中的區域等// 分配給該資源使用的各個資源// 進度調度信息(留待下面講解)
}

這樣,每一個PCB對象,就代表者一個實實在在運行著的程序,也就是進程。
操作系統再通過這種數據結構,如:線性表、搜索樹等PCB對象組織起來,方便管理時進行增刪改查的操作。

二、認識線程

1. 線程是什么?
一個線程就是一個“執行流”,每個線程之間都可以按照順序執行自己的代碼,多個線程之間“同時”執行著多份代碼。

2. 為什么要有線程?

(1)“并發編程”成為剛需。

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

(2)雖然多進程也能實現并發編程,但是線程比進程更輕量。

  • 創建線程比創建進程更快;
  • 銷毀線程比銷毀進程更快;
  • 調度線程比調度進程更快。

(3)雖然線程比進程輕量,但是人們還不滿足,于是有了“線程池” (ThreadPool)和 “協程”(Coroutine)。

三、進程和線程的區別(重點!)

  1. 進程包含線程。每個進程至少有一個線程存在,即主線程。
  2. 進程和進程之間不共享內存空間,同一個進程的線程之間共享一個內存空間。
  3. 進程是系統分配資源的最小單位,線程是系統調度的最小單位。

四、Java的線程和操作系統線程的關系

線程是操作系統中的概念,操作系統內核實現了線程這樣的機制,并且對用戶提供了一些API供用戶使用(例如 Linux 的 pthread庫)

五、第一個多線程編程

【代碼】

//寫一個類,繼承自標準庫的Thread
class MyThread extends Thread {@Overridepublic void run() {System.out.println("hello word!");}
}
public class ThreadDemo1 {public static void main(String[] args) {//創建線程,是希望線程成為一個獨立的執行流(執行一段代碼)//創建線程是相當于雇了個人幫我們干活Thread t = new MyThread(); //這里就不用new標準庫的thread的了,而是剛才創建的子類t.start(); //線程中的特殊方法,啟動一個線程}
}

【運行結果】
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214899.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214899.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214899.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

20 套監控平臺統一成 1 套 Flashcat,國泰君安監控選型提效之路

author:宋慶羽-國泰君安期貨 運維工作最重要的就是維護系統的穩定性,其中監控是保證系統穩定性很重要的一環。通過監控可以了解系統的運行狀態,及時發現問題和系統隱患,有助于一線人員快速解決問題,提高業務系統的可用時長。 作為…

算法----K 和數對的最大數目

題目 給你一個整數數組 nums 和一個整數 k 。 每一步操作中,你需要從數組中選出和為 k 的兩個整數,并將它們移出數組。 返回你可以對數組執行的最大操作數。 示例 1: 輸入:nums [1,2,3,4], k 5 輸出:2 解釋&…

C++聯合體union

聯合體 將多個類型合并到一起省空間 枚舉與聯合一起使用 匿名聯合 類似于無作用域 C11聯合體定義非內建類型 C11 引入了能夠在聯合體中使用非內建類型的能力,這些類型包括具有自定義構造函數、析構函數、拷貝構造函數和拷貝賦值運算符的類。 關鍵特性…

程序員提高效率的 10 個方法

前端面試題庫 (面試必備) 推薦:★★★★★ 地址:前端面試題庫 1. 早上不要開會 📅 每個人一天是 24 小時,時間是均等的,但是時間的價值卻不是均等的,早上 1 小時的價值…

【C語言快速學習基礎篇】之二控制語句、循環語句

文章目錄 一、控制語句1.1、if...else...單條件語句1.2、if...else if...else...多條件語句1.3、switch...case 二、循環語句2.1、for循環2.2、while循環2.3、注意:for循環和while循環使用上面等同2.4、do while循環2.4.1、while條件成立時2.4.2、while條件不成立時…

VMware虛機啟動報dm0 internal error xfs_want_corrupted_goto at line 1727 報錯,虛機進入救援模式

k8s虛機k8s-master01節點虛機開機啟動進入救援模式,提示 internal error xfs_want_corrupted_goto at line 1727 報錯 進入救援模式后無法執行其它命令,只能先查詢相關報錯,再進行修復 處理辦法: 1、查看相關報錯信息 # jour…

BluetoothDevice 序列化問題

文章目錄 前言思考分析定位 前言 在做藍牙設備通信時,遇到一個奇葩的問題,公司另一個部門開發的藍牙組件庫,把藍牙設備BluetoothDevice進行了序列化,在連接時候又進行反序列化。但是當我去調試我的項目時,發現發序列化…

人大金倉證書過期問題

select count(*) from sys_stat_activity select GET_LICENSE_VALIDDAYS(); 試用企業版3個月到期后,改為專業版,有效期仍是3個月 1、在kingbase用戶下執行sys_ctl -D data start時報錯 ./sys_ctl -D /home/kingbase/KingbaseES/data start 等待服務器進…

P1160 隊列安排

這很明顯是一個鏈表的題目&#xff0c;考鏈表的基礎知識 開始先定義了一個結構體節點&#xff0c;里面有一個val和一個指向node結構體的指針next 然后通過typedf將linkedlist表示為一個指向node的指針 insert代表右插入 push是左插入 #include <iostream> using nam…

[足式機器人]Part2 Dr. CAN學習筆記-自動控制原理Ch1-3燃燒卡路里-系統分析實例

本文僅供學習使用 本文參考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN學習筆記-自動控制原理Ch1-3燃燒卡路里-系統分析實例 1. 數學模型2. 比例控制 Proprotional Control 1. 數學模型 2. 比例控制 Proprotional Control

建筑工程企業網站建設的效果如何

建筑工程團隊也是市場重要的組成部分&#xff0c;尤其是建筑公司&#xff0c;往往更具品牌力&#xff0c;而在企業發展方面也面臨多個痛點&#xff1a; 1、品牌宣傳拓客難 建筑工程屬于高價、長時間跟進的行業&#xff0c;因此無論需求者還是商家都非常看重企業品牌及業務縱深…

C++學習筆記(十三)

一、C對象模型和this指針 1.1 成員變量和成員函數分開存儲 在C中&#xff0c;類內的成員變量和成員函數分開存儲 只有非靜態成員變量才屬于類的對象 #include <iostream>using namespace std;class a1 {};class a2 {int a; };class a3 {int a;static int b; };class …

基于ssm端游賬號銷售管理系統論文

摘 要 互聯網發展至今&#xff0c;無論是其理論還是技術都已經成熟&#xff0c;而且它廣泛參與在社會中的方方面面。它讓信息都可以通過網絡傳播&#xff0c;搭配信息管理工具可以很好地為人們提供服務。針對端游賬號銷售信息管理混亂&#xff0c;出錯率高&#xff0c;信息安全…

讓你從此不再懼怕ANR

原文鏈接 讓你從此不再懼怕ANR 這篇文章是基于官方的Diagnose and fix ANRs翻譯而來&#xff0c;但也不是嚴格的翻譯&#xff0c;原文的內容都在&#xff0c;又加上了自己的理解以及自己的經驗&#xff0c;以譯注的形式對原文的作一些補充。 當一個Android應用的UI線程被阻塞時…

[排序篇] 冒泡排序

目錄 一、概念 二、冒泡排序 2.1 冒泡降序(從大到小排序) 2.2 冒泡升序(從小到大排序) 三、冒泡排序應用 總結 一、概念 冒泡排序核心思想&#xff1a;每次比較兩個相鄰的元素&#xff0c;如果它們不符合排序規則&#xff08;升序或降序&#xff09;則把它們交換過來。…

Linux內存管理(十七):percpu 機制(2)——動態分配

源碼基于:Linux5.4 約定: 芯片架構:ARM64內存架構:UMACONFIG_ARM64_VA_BITS:39CONFIG_ARM64_PAGE_SHIFT:12CONFIG_PGTABLE_LEVELS :3關聯博文: percpu機制(1)——框架實現 percpu機制(2)——動態分配 0. 前言 上一篇博文 我們剖析了 percpu 機制的整個框架,包括per…

大致人類應該是短時記憶和利用短時記憶控制利用周圍環境達到長期記憶的吧

這里寫目錄標題 圖代碼代碼解析圖 代碼 import timedef route_llm(route_text):passdef write_to_dask(one_sum, one_text, one_path

小程序嵌套H5

小程序嵌套H5 使用Hbuild x開發H5頁面項目里面使用了js-sdk工具包H5發布完成之后生成URL。新建一個小程序空項目&#xff0c;填寫小程序的appid。本地調試的時候如果報錯無法打開該網頁&#xff0c;那么需要勾選先的不校驗。發布體驗版本需要注意下面的兩個配置點。 使用Hbuild…

中通快遞單號查詢入口,將指定某天簽收的單號篩選出來

批量查詢中通快遞單號的物流信息&#xff0c;將指定某天簽收的單號篩選出來。 所需工具&#xff1a; 一個【快遞批量查詢高手】軟件 中通快遞單號若干 操作步驟&#xff1a; 步驟1&#xff1a;運行【快遞批量查詢高手】軟件&#xff0c;并登錄 步驟2&#xff1a;點擊主界面左…

Spring Boot中JdbcTemplate多數據源配置

作者簡介&#xff1a;大家好&#xff0c;我是擼代碼的羊駝&#xff0c;前阿里巴巴架構師&#xff0c;現某互聯網公司CTO 聯系v&#xff1a;sulny_ann&#xff08;17362204968&#xff09;&#xff0c;加我進群&#xff0c;大家一起學習&#xff0c;一起進步&#xff0c;一起對抗…