定義
1、線程是處理器任務(wù)調(diào)度和執(zhí)行的基本單位,進(jìn)程是操作系統(tǒng)資源分配的基本單位。
包含關(guān)系
2、一個(gè)進(jìn)程可以包含多個(gè)線程。
從Java虛擬機(jī)的角度來(lái)看,Java虛擬機(jī)運(yùn)行時(shí)的數(shù)據(jù)區(qū)包括堆、方法區(qū)、虛擬機(jī)棧、本地方法堆、程序計(jì)數(shù)器。每個(gè)過(guò)程是獨(dú)立的,每個(gè)過(guò)程包含多個(gè)線程,每個(gè)過(guò)程包含的多個(gè)線程不是獨(dú)立的。這個(gè)線程會(huì)分享過(guò)程的堆和方法區(qū),但這些線程不會(huì)分享虛擬機(jī)棧、本地方法堆和程序計(jì)數(shù)器。也就是說(shuō),每個(gè)過(guò)程包含多個(gè)線程共享過(guò)程的堆和方法區(qū),以及私有的虛擬機(jī)棧、本地方法堆和程序計(jì)數(shù)器。
3、區(qū)別在存儲(chǔ)器分配和資源開(kāi)銷。
存儲(chǔ)器分配:進(jìn)程中的地址空間和資源是相互獨(dú)立的,同一過(guò)程中的線程將共享線程中的地址空間和資源(堆和方法區(qū))。
資源開(kāi)銷:每個(gè)進(jìn)程都有自己的數(shù)據(jù)空間,進(jìn)程之間的切換會(huì)有很大的開(kāi)銷。屬于同一個(gè)進(jìn)程的線程會(huì)共享堆和方法區(qū),同時(shí)會(huì)有私人虛擬機(jī)棧、本地方法棧、程序計(jì)數(shù)器,線程之間的切換資源開(kāi)銷較小。
以上就是java進(jìn)程和線程的關(guān)系,希望對(duì)大家有所幫助。更多關(guān)于“java培訓(xùn)”的問(wèn)題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬(wàn)人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時(shí)歡迎你來(lái)試聽(tīng)。