并發(fā)
計(jì)算機(jī)用戶想當(dāng)然地認(rèn)為他們的系統(tǒng)一次可以做不止一件事,他們?cè)O(shè)想他們可以繼續(xù)在文字處理器中工作,而其他應(yīng)用程序則下載文件、管理打印隊(duì)列和流音頻,即使是單個(gè)應(yīng)用程序通常也希望一次完成多個(gè)任務(wù)。例如,流式音頻應(yīng)用程序必須同時(shí)從網(wǎng)絡(luò)上讀取數(shù)字音頻、解壓縮、管理回放并更新其顯示,甚至文字處理器應(yīng)始終準(zhǔn)備好響應(yīng)鍵盤和鼠標(biāo)事件,無(wú)論重新格式化文本或更新顯示有多繁忙,可以執(zhí)行此類操作的軟件稱為并發(fā)軟件。
Java平臺(tái)的設(shè)計(jì)初衷是為了支持并發(fā)編程,在Java編程語(yǔ)言和Java類庫(kù)中提供基本的并發(fā)支持,從5.0版開(kāi)始,Java平臺(tái)還包含高級(jí)并發(fā)API,本課程介紹了平臺(tái)的基本并發(fā)支持,并總結(jié)了java.util.concurrent包中的一些高級(jí)API。
進(jìn)程和線程在并發(fā)編程中,有兩個(gè)基本的執(zhí)行單元:進(jìn)程和線程,在Java編程語(yǔ)言中,并發(fā)編程主要涉及線程,但是,進(jìn)程也很重要。
計(jì)算機(jī)系統(tǒng)通常具有許多活動(dòng)進(jìn)程和線程,即使在只有單個(gè)執(zhí)行核心的系統(tǒng)中也是如此,因此在任何給定時(shí)刻只有一個(gè)線程實(shí)際執(zhí)行,單個(gè)核心的處理時(shí)間通過(guò)稱為時(shí)間切片的OS功能在進(jìn)程和線程之間共享。
對(duì)于具有多個(gè)處理器或具有多個(gè)執(zhí)行核心的處理器的計(jì)算機(jī)系統(tǒng)變得越來(lái)越普遍,這極大地增強(qiáng)了系統(tǒng)并發(fā)執(zhí)行進(jìn)程和線程的能力 — 但即使在沒(méi)有多個(gè)處理器或執(zhí)行核心的簡(jiǎn)單系統(tǒng)上,并發(fā)也是可能的。
進(jìn)程進(jìn)程具有獨(dú)立的執(zhí)行環(huán)境,進(jìn)程通常具有完整的私有基本運(yùn)行時(shí)資源集,特別是,每個(gè)進(jìn)程都有自己的內(nèi)存空間。
進(jìn)程通常被視為程序或應(yīng)用程序的同義詞,但是,用戶看作的單個(gè)應(yīng)用程序?qū)嶋H上可能是一組協(xié)作進(jìn)程,為了促進(jìn)進(jìn)程之間的通信,大多數(shù)操作系統(tǒng)都支持進(jìn)程間通信(IPC)資源,例如管道和socket,IPC不僅用于同一系統(tǒng)上的進(jìn)程之間的通信,還用于不同系統(tǒng)上的進(jìn)程。
Java虛擬機(jī)的大多數(shù)實(shí)現(xiàn)都作為單個(gè)進(jìn)程運(yùn)行,Java應(yīng)用程序可以使用ProcessBuilder對(duì)象創(chuàng)建額外進(jìn)程,多進(jìn)程應(yīng)用程序超出了本課程的范圍。
線程線程有時(shí)被稱為輕量級(jí)進(jìn)程,進(jìn)程和線程都提供執(zhí)行環(huán)境,但創(chuàng)建新線程所需的資源比創(chuàng)建新進(jìn)程要少。
線程存在于進(jìn)程中 — 每個(gè)進(jìn)程至少有一個(gè)線程,線程共享進(jìn)程的資源,包括內(nèi)存和打開(kāi)文件,這使高效但可能有問(wèn)題的通信。
多線程執(zhí)行是Java平臺(tái)的基本特性,每個(gè)應(yīng)用程序至少有一個(gè)線程 — 或幾個(gè),如果你計(jì)算執(zhí)行內(nèi)存管理和信號(hào)處理等任務(wù)的“系統(tǒng)”線程的話。但是從應(yīng)用程序員的角度來(lái)看,你只從一個(gè)線程開(kāi)始,稱為主線程,該線程具有創(chuàng)建額外線程的能力,我們將在下一節(jié)中進(jìn)行演示。
下一篇:Thread對(duì)象文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/73003.html
摘要:快照,帶線程命令,是顯示全部進(jìn)程,是顯示線程,全格式輸出顯示進(jìn)程樹,不加顯示所有實(shí)時(shí)快照推薦程度按數(shù)字從小到大。 有時(shí)候好好的程序放到生產(chǎn)服務(wù)器上一段時(shí)間后,就會(huì)發(fā)現(xiàn)服務(wù)器響應(yīng)緩慢,進(jìn)而進(jìn)一步發(fā)現(xiàn)是cpu過(guò)高,于是就慌了,造成cpu過(guò)高的原因很多,不過(guò)大多是由于資源吃緊造成,例如:sql執(zhí)行過(guò)慢,程序里存在死循環(huán),數(shù)據(jù)庫(kù)連接未釋放,網(wǎng)絡(luò)阻塞導(dǎo)致的第三方框架代碼出現(xiàn)死循環(huán),大量的操作導(dǎo)致...
摘要:在這個(gè)示例中我們使用了一個(gè)單線程線程池的。在延遲消逝后,任務(wù)將會(huì)并發(fā)執(zhí)行。這是并發(fā)系列教程的第一部分。第一部分線程和執(zhí)行器第二部分同步和鎖第三部分原子操作和 Java 8 并發(fā)教程:線程和執(zhí)行器 原文:Java 8 Concurrency Tutorial: Threads and Executors 譯者:BlankKelly 來(lái)源:Java8并發(fā)教程:Threads和Execut...
摘要:最近看前端都展開(kāi)了幾場(chǎng)而我大知乎最熱語(yǔ)言還沒(méi)有相關(guān)。有關(guān)書籍的介紹,大部分截取自是官方介紹。但從開(kāi)始,標(biāo)準(zhǔn)庫(kù)為我們提供了模塊,它提供了和兩個(gè)類,實(shí)現(xiàn)了對(duì)和的進(jìn)一步抽象,對(duì)編寫線程池進(jìn)程池提供了直接的支持。 《流暢的python》閱讀筆記 《流暢的python》是一本適合python進(jìn)階的書, 里面介紹的基本都是高級(jí)的python用法. 對(duì)于初學(xué)python的人來(lái)說(shuō), 基礎(chǔ)大概也就夠用了...
閱讀 3371·2021-11-18 10:02
閱讀 3522·2021-10-11 10:58
閱讀 3448·2021-09-24 09:47
閱讀 1218·2021-09-22 15:21
閱讀 4185·2021-09-10 11:10
閱讀 3324·2021-09-03 10:28
閱讀 1805·2019-08-30 15:45
閱讀 2223·2019-08-30 14:22