java进程和线程_Java™ 教程(进程和线程)
并發(fā)
計(jì)算機(jī)用戶想當(dāng)然地認(rèn)為他們的系統(tǒng)一次可以做不止一件事,他們設(shè)想他們可以繼續(xù)在文字處理器中工作,而其他應(yīng)用程序則下載文件、管理打印隊(duì)列和流音頻,即使是單個應(yīng)用程序通常也希望一次完成多個任務(wù)。例如,流式音頻應(yīng)用程序必須同時從網(wǎng)絡(luò)上讀取數(shù)字音頻、解壓縮、管理回放并更新其顯示,甚至文字處理器應(yīng)始終準(zhǔn)備好響應(yīng)鍵盤和鼠標(biāo)事件,無論重新格式化文本或更新顯示有多繁忙,可以執(zhí)行此類操作的軟件稱為并發(fā)軟件。
Java平臺的設(shè)計(jì)初衷是為了支持并發(fā)編程,在Java編程語言和Java類庫中提供基本的并發(fā)支持,從5.0版開始,Java平臺還包含高級并發(fā)API,本課程介紹了平臺的基本并發(fā)支持,并總結(jié)了java.util.concurrent包中的一些高級API。
進(jìn)程和線程
在并發(fā)編程中,有兩個基本的執(zhí)行單元:進(jìn)程和線程,在Java編程語言中,并發(fā)編程主要涉及線程,但是,進(jìn)程也很重要。
計(jì)算機(jī)系統(tǒng)通常具有許多活動進(jìn)程和線程,即使在只有單個執(zhí)行核心的系統(tǒng)中也是如此,因此在任何給定時刻只有一個線程實(shí)際執(zhí)行,單個核心的處理時間通過稱為時間切片的OS功能在進(jìn)程和線程之間共享。
對于具有多個處理器或具有多個執(zhí)行核心的處理器的計(jì)算機(jī)系統(tǒng)變得越來越普遍,這極大地增強(qiáng)了系統(tǒng)并發(fā)執(zhí)行進(jìn)程和線程的能力 — 但即使在沒有多個處理器或執(zhí)行核心的簡單系統(tǒng)上,并發(fā)也是可能的。
進(jìn)程
進(jìn)程具有獨(dú)立的執(zhí)行環(huán)境,進(jìn)程通常具有完整的私有基本運(yùn)行時資源集,特別是,每個進(jìn)程都有自己的內(nèi)存空間。
進(jìn)程通常被視為程序或應(yīng)用程序的同義詞,但是,用戶看作的單個應(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)都作為單個進(jìn)程運(yùn)行,Java應(yīng)用程序可以使用ProcessBuilder對象創(chuàng)建額外進(jìn)程,多進(jìn)程應(yīng)用程序超出了本課程的范圍。
線程
線程有時被稱為輕量級進(jìn)程,進(jìn)程和線程都提供執(zhí)行環(huán)境,但創(chuàng)建新線程所需的資源比創(chuàng)建新進(jìn)程要少。
線程存在于進(jìn)程中 — 每個進(jìn)程至少有一個線程,線程共享進(jìn)程的資源,包括內(nèi)存和打開文件,這使高效但可能有問題的通信。
多線程執(zhí)行是Java平臺的基本特性,每個應(yīng)用程序至少有一個線程 — 或幾個,如果你計(jì)算執(zhí)行內(nèi)存管理和信號處理等任務(wù)的“系統(tǒng)”線程的話。但是從應(yīng)用程序員的角度來看,你只從一個線程開始,稱為主線程,該線程具有創(chuàng)建額外線程的能力,我們將在下一節(jié)中進(jìn)行演示。
總結(jié)
以上是生活随笔為你收集整理的java进程和线程_Java™ 教程(进程和线程)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php把日期转成时间戳,php如何把日期
- 下一篇: java美元兑换,(Java实现) 美元