最后附上鏈接
第一章:并發(fā)專題
1.?線程基礎(chǔ)赘方、線程之間的共享和協(xié)作 (摘抄筆記)
基礎(chǔ)概念
什么是進程和線程:
進程是程序運行資源分配的最小單位目溉。
進程是操作系統(tǒng)進行資源分配的最小單位,其中資源包括:CPU、內(nèi)存空間艺普、磁盤 IO 等,同一進程中的多條線程共享該進程中的全部系統(tǒng)資源,而進程和進程
之間是相互獨立的簸州。進程是具有一定獨立功能的程序關(guān)于某個數(shù)據(jù)集合上的一次運行活動,進程是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。
進程是程序在計算機上的一次執(zhí)行活動歧譬。當你運行一個程序,你就啟動了一個進程岸浑。顯然,程序是死的、靜態(tài)的,進程是活的瑰步、動態(tài)的矢洲。進程可以分為系統(tǒng)進
程和用戶進程。凡是用于完成操作系統(tǒng)的各種功能的進程就是系統(tǒng)進程,它們就是處于運行狀態(tài)下的操作系統(tǒng)本身,用戶進程就是所有由你啟動的進程缩焦。
線程是 CPU 調(diào)度的最小單位,必須依賴于進程而存在
線程是進程的一個實體,是 CPU 調(diào)度和分派的基本單位,它是比進程更小的读虏、能獨立運行的基本單位责静。線程自己基本上不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源(如程序計數(shù)器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。
線程無處不在
任何一個程序都必須要創(chuàng)建線程,特別是 Java 不管任何程序都必須啟動一個main 函數(shù)的主線程; Java Web 開發(fā)里面的定時任務盖桥、定時器灾螃、JSP 和 Servlet、異
步消息處理機制,遠程訪問接口RM等,任何一個監(jiān)聽事件, onclick的觸發(fā)事件等都離不開線程和并發(fā)的知識揩徊。
CPU 核心數(shù)和線程數(shù)的關(guān)系
多核心:也指單芯片多處理器( Chip Multiprocessors,簡稱 CMP),CMP 是由美國斯坦福大學提出的,其思想是將大規(guī)模并行處理器中的 SMP(對稱多處理器)集成
到同一芯片內(nèi),各個處理器并行執(zhí)行不同的進程腰鬼。這種依靠多個 CPU 同時并行地運行程序是實現(xiàn)超高速計算的一個重要方向,稱為并行處理多線程: Simultaneous Multithreading.簡稱 SMT.讓同一個處理器上的多個線程同步執(zhí)行并共享處理器的執(zhí)行資源。核心數(shù)塑荒、線程數(shù):目前主流 CPU 都是多核的熄赡。增加核心數(shù)目就是為了增加線
程數(shù),因為操作系統(tǒng)是通過線程來執(zhí)行任務的,一般情況下它們是 1:1 對應關(guān)系,也就是說四核 CPU 一般擁有四個線程。但 Intel 引入超線程技術(shù)后,使核心數(shù)與線程
數(shù)形成 1:2 的關(guān)系
視頻齿税、筆記學習:學習視頻
一起學習+ 威: Duochichi??