国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java并發(fā)編程實(shí)戰(zhàn)-讀書筆記-第1章 簡介

2019-11-11 06:45:21
字體:
供稿:網(wǎng)友

在早期的計(jì)算機(jī)中不包含操作系統(tǒng),它們從頭到尾只執(zhí)行一個(gè)程序,并且這個(gè)程序能訪問計(jì)算機(jī)中的所有資源。

操作系統(tǒng)的出現(xiàn)使得計(jì)算機(jī)每次運(yùn)行多個(gè)程序,并且不同的程序都在單獨(dú)的進(jìn)程中運(yùn)行:操作系統(tǒng)為各個(gè)獨(dú)立執(zhí)行的進(jìn)程分配各種資源,包括內(nèi)存、文件句柄、安全證書等。

不同進(jìn)程中交換數(shù)據(jù)的通信機(jī)制(粗粒度):

套接字共享內(nèi)存文件信號量信號處理器

在計(jì)算機(jī)中加入操作系統(tǒng)來實(shí)現(xiàn)多個(gè)程序同時(shí)執(zhí)行的原因:

資源利用率。在某些情況下,程序必須等待某個(gè)外部操作執(zhí)行完成,比如輸入輸出操作,而在等待時(shí)程序無法執(zhí)行其他任何工作。因此,如果在等待的同時(shí)計(jì)算機(jī)可以運(yùn)行其他程序,那么無疑將提高資源的利用率。公平性。不同的用戶和程序?qū)τ?jì)算機(jī)上的資源有著同等的使用權(quán)。一種高效的運(yùn)行方式是通過粗粒度的時(shí)間分片(Time Slicing)使這些用戶和程序能夠共享計(jì)算機(jī)資源,而不是由一個(gè)程序從頭運(yùn)行到尾,然后再啟動下一個(gè)程序。便利性。通常來說,在計(jì)算多個(gè)任務(wù)時(shí),應(yīng)該編寫多個(gè)程序,每個(gè)程序執(zhí)行一個(gè)任務(wù)并在必要時(shí)互相通信,這比只編寫一個(gè)程序來計(jì)算所有任務(wù)更容易實(shí)現(xiàn)。

在早期的分時(shí)系統(tǒng)中,每個(gè)進(jìn)程相當(dāng)于一臺虛擬的馮諾依曼計(jì)算機(jī),他擁有存儲 指令和數(shù)據(jù) 的內(nèi)存空間,根據(jù)機(jī)器語言的語義以串行方式執(zhí)行指令,并通過一組I/O指令與外部設(shè)備通信。

串行編程模型的優(yōu)勢在于其直觀性和簡單性,因?yàn)樗7铝巳祟惖墓ぷ鞣绞剑好看沃蛔鲆患虑椋鐾曛笤僮隽硪患?/p>

線程允許在同一個(gè)進(jìn)程中同時(shí)存在多個(gè)程序控制流,線程會共享進(jìn)程范圍內(nèi)的資源,例如內(nèi)存句柄和文件句柄,但每個(gè)線程都有各自的程序計(jì)數(shù)器PRogram Counter)、棧、局部變量等。

線程的優(yōu)勢:降低程序的開發(fā)和維護(hù)成本,提升復(fù)雜應(yīng)用程序的性能,提高GUI程序的響應(yīng)靈敏度,提高資源利用率和系統(tǒng)吞吐率。

發(fā)揮多處理器的強(qiáng)大能力建模的簡單性異步事件的簡化處理響應(yīng)更靈敏的用戶界面

線程帶來的風(fēng)險(xiǎn)

安全性問題(競態(tài)條件(Race Condition))活躍性問題性能問題

安全性的含義是“永遠(yuǎn)不發(fā)生糟糕的事情” 活躍性則關(guān)注另一個(gè)目標(biāo):“某件正確的事情最終會發(fā)生”。單線程程序中:無限循環(huán);多線程程序中:死鎖、饑餓、活鎖。

性能問題包括服務(wù)時(shí)間過長、響應(yīng)不靈敏、吞吐率過低、資源消耗過高、可伸縮性較低等。

線程帶來的運(yùn)行時(shí)開銷:

在多線程程序中,當(dāng)線程調(diào)度器臨時(shí)掛起活躍線程并轉(zhuǎn)而運(yùn)行另一個(gè)線程時(shí),就會頻繁地出現(xiàn)上下文切換操作(Context Switch),這種造作將帶來極大的開銷:保存和恢復(fù)執(zhí)行上下文,丟失局部性,并且CPU時(shí)間將更多地花在線程調(diào)度而不是線程運(yùn)行上。當(dāng)線程共享數(shù)據(jù)時(shí),必須使用同步機(jī)制,而這些機(jī)制往往會抑制某些編譯器優(yōu)化,使內(nèi)存緩存區(qū)中的數(shù)據(jù)無效,以及增加共享內(nèi)存總線的同步流量。

當(dāng)某個(gè)框架在應(yīng)用程序中引入并發(fā)性時(shí),通常不可能將并發(fā)性僅僅局限于框架代碼,因?yàn)榭蚣鼙旧頃卣{(diào)(Callback)應(yīng)用程序的代碼,而這些代碼將訪問應(yīng)用程序的狀態(tài)。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 墨竹工卡县| 隆化县| 房产| 客服| 永丰县| 海盐县| 禄丰县| 新沂市| 安龙县| 双柏县| 米林县| 林周县| 长海县| 中阳县| 安西县| 沙洋县| 巴马| 广水市| 永靖县| 晋江市| 偏关县| 华坪县| 邮箱| 南木林县| 紫阳县| 呈贡县| 岳普湖县| 汾西县| 汉沽区| 滦南县| 保德县| 长子县| 康保县| 新源县| 贞丰县| 乐清市| 永城市| 邵阳县| 北流市| 东明县| 嵊州市|