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