免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

JUC學(xué)習(xí)筆記——進(jìn)程與線程

JUC學(xué)習(xí)筆記——進(jìn)程與線程在本系列內(nèi)容中我們會(huì)對(duì)JUC做一個(gè)系統(tǒng)的學(xué)習(xí),本片將會(huì)介紹JUC的進(jìn)程與線程部分
我們會(huì)分為以下幾部分進(jìn)行介紹:

  • 進(jìn)程與線程
  • 并發(fā)與并行
  • 同步與異步
  • 線程詳解
進(jìn)程與線程在這一小節(jié)我們將簡(jiǎn)單介紹進(jìn)程與線程
進(jìn)程首先我們來(lái)簡(jiǎn)單了解一下程序:
  • 程序由指令和數(shù)據(jù)組成,我們必須將指令加載至 CPU,數(shù)據(jù)加載至內(nèi)存 。在指令運(yùn)行過(guò)程中還需要用到磁盤、網(wǎng)絡(luò)等設(shè)備 。
接下來(lái)我們才能講解進(jìn)程的定義:
  • 進(jìn)程就是用來(lái)加載指令、管理內(nèi)存、管理 IO 的
  • 當(dāng)一個(gè)程序被運(yùn)行,從磁盤加載這個(gè)程序的代碼至內(nèi)存,這時(shí)就開啟了一個(gè)進(jìn)程 。
  • 進(jìn)程就可以視為程序的一個(gè)實(shí)例 。大部分程序可以同時(shí)運(yùn)行多個(gè)實(shí)例進(jìn)程,也有的程序只能啟動(dòng)一個(gè)實(shí)例進(jìn)程 。
線程我們來(lái)簡(jiǎn)單介紹一下線程:
  • 一個(gè)進(jìn)程之內(nèi)可以分為一到多個(gè)線程 。
  • 一個(gè)線程就是一個(gè)指令流,將指令流中的一條條指令以一定的順序交給 CPU 執(zhí)行
  • Java 中,線程作為最小調(diào)度單位,進(jìn)程作為資源分配的最小單位 。在 windows 中進(jìn)程是不活動(dòng)的,只是作為線程的容器
兩者區(qū)別我們來(lái)介紹一下進(jìn)程與線程之間的區(qū)別:
  • 進(jìn)程基本上相互獨(dú)立的,而線程存在于進(jìn)程內(nèi),是進(jìn)程的一個(gè)子集
  • 進(jìn)程擁有共享的資源,如內(nèi)存空間等,供其內(nèi)部的線程共享
  • 線程更輕量,線程上下文切換成本一般上要比進(jìn)程上下文切換低
此外兩者的通信方式也不相同:
  • 進(jìn)程通信:同一臺(tái)計(jì)算機(jī)的進(jìn)程通信稱為 IPC;不同計(jì)算機(jī)之間的進(jìn)程通信,需要通過(guò)網(wǎng)絡(luò),并遵守共同的協(xié)議,例如 HTTP
  • 線程通信:線程通信相對(duì)簡(jiǎn)單,因?yàn)樗鼈児蚕磉M(jìn)程內(nèi)的內(nèi)存,一個(gè)例子是多個(gè)線程可以訪問(wèn)同一個(gè)共享變量
并發(fā)與并行在這一小節(jié)我們將簡(jiǎn)單介紹并發(fā)與并行
并發(fā)首先我們需要了解一下任務(wù)調(diào)度器:
  • 單核 cpu 下,線程實(shí)際還是 串行執(zhí)行 的 。
  • 操作系統(tǒng)中有一個(gè)組件叫做任務(wù)調(diào)度器,將 cpu 的時(shí)間片分給不同的程序使用 。
那么我們的并發(fā)實(shí)際上就是根據(jù)任務(wù)調(diào)度器來(lái)工作的:
  • 并發(fā)是借助任務(wù)調(diào)度器,在一段時(shí)間段內(nèi)將CPU分給多個(gè)線程使用,但由于切換快時(shí)間短,所以被看作是同時(shí)進(jìn)行
  • 一般會(huì)將這種 線程輪流使用 CPU 的做法稱為并發(fā)
  • 實(shí)際上并發(fā)的情況是:微觀串行,宏觀并行
通俗來(lái)講:
  • 并發(fā)(concurrent)是同一時(shí)間應(yīng)對(duì)(dealing with)多件事情的能力
例如下圖:
CPU時(shí)間片 1時(shí)間片 2時(shí)間片 3時(shí)間片 4core線程 1線程 2線程 3線程 4并行并行的概念就相對(duì)而言比較簡(jiǎn)單了:
  • 并行就是借助多核CPU,確確實(shí)實(shí)地在同一時(shí)間執(zhí)行多個(gè)進(jìn)程
通俗來(lái)講:
  • 并行(parallel)是同一時(shí)間動(dòng)手做(doing)多件事情的能力
例如下圖:
CPU時(shí)間片 1時(shí)間片 2時(shí)間片 3時(shí)間片 4core 1線程 1線程 1線程 3線程 3core 2線程 2線程 4線程 2線程 4同步與異步在這一小節(jié)我們將簡(jiǎn)單介紹并發(fā)與并行
同步與異步概念首先我們來(lái)簡(jiǎn)單介紹一下同步與異步:
  • 需要等待結(jié)果返回才能繼續(xù)執(zhí)行的操作就是同步操作
  • 不需要等待結(jié)果返回就可以繼續(xù)執(zhí)行的操作就是異步操作
另外同步操作還有另一個(gè)概念:
  • 在多線程中,表示多線程的步調(diào)一致
同步與異步選擇方法我們的同步與異步的選擇通常會(huì)決定程序的運(yùn)行速度,因而選擇同步或異步是非常重要的

經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀