文章詳情頁
JAVA教程:解析Java的多線程機制(2)
瀏覽:25日期:2024-07-02 11:18:51
內(nèi)容: 進(jìn)程與Java線程的區(qū)別 應(yīng)用程序在執(zhí)行過程中存在一個內(nèi)存空間的初始入口點地址、一個程序執(zhí)行過程中的代碼執(zhí)行序列以及用于標(biāo)識進(jìn)程結(jié)束的內(nèi)存出口點地址,在進(jìn)程執(zhí)行過程中的每一時間點均有唯一的處理器指令與內(nèi)存單元地址相對應(yīng)。 Java語言中定義的線程(Thread)同樣包括一個內(nèi)存入口點地址、一個出口點地址以及能夠順序執(zhí)行的代碼序列。但是進(jìn)程與線程的重要區(qū)別在于線程不能夠單獨執(zhí)行,它必須運行在處于活動狀態(tài)的應(yīng)用程序進(jìn)程中,因此可以定義線程是程序內(nèi)部的具有并發(fā)性的順序代碼流。 Unix操作系統(tǒng)和Microsoft Windows操作系統(tǒng)支持多用戶、多進(jìn)程的并發(fā)執(zhí)行,而Java語言支持應(yīng)用程序進(jìn)程內(nèi)部的多個執(zhí)行線程的并發(fā)執(zhí)行。多線程的意義在于一個應(yīng)用程序的多個邏輯單元可以并發(fā)地執(zhí)行。但是多線程并不意味著多個用戶進(jìn)程在執(zhí)行,操作系統(tǒng)也不把每個線程作為獨立的進(jìn)程來分配獨立的系統(tǒng)資源。進(jìn)程可以創(chuàng)建其子進(jìn)程,子進(jìn)程與父進(jìn)程擁有不同的可執(zhí)行代碼和數(shù)據(jù)內(nèi)存空間。而在用于代表應(yīng)用程序的進(jìn)程中多個線程共享數(shù)據(jù)內(nèi)存空間,但保持每個線程擁有獨立的執(zhí)行堆棧和程序執(zhí)行上下文(Context)。 基于上述區(qū)別,線程也可以稱為輕型進(jìn)程 (Light Weight Process,LWP)。不同線程間允許任務(wù)協(xié)作和數(shù)據(jù)交換,使得在計算機系統(tǒng)資源消耗等方面非常廉價。 線程需要操作系統(tǒng)的支持,不是所有類型的計算機都支持多線程應(yīng)用程序。Java程序設(shè)計語言將線程支持與語言運行環(huán)境結(jié)合在一起,提供了多任務(wù)并發(fā)執(zhí)行的能力。這就好比一個人在處理家務(wù)的過程中,將衣服放到洗衣機中自動洗滌后將大米放在電飯鍋里,然后開始做菜。等菜做好了,飯熟了同時衣服也洗好了。 需要注意的是:在應(yīng)用程序中使用多線程不會增加 CPU 的數(shù)據(jù)處理能力。只有在多CPU 的計算機或者在網(wǎng)絡(luò)計算體系結(jié)構(gòu)下,將Java程序劃分為多個并發(fā)執(zhí)行線程后,同時啟動多個線程運行,使不同的線程運行在基于不同處理器的Java虛擬機中,才能提高應(yīng)用程序的執(zhí)行效率。轉(zhuǎn)自: 賽迪網(wǎng) Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標(biāo)簽:
Java
相關(guān)文章:
1. python實現(xiàn)線性回歸算法2. 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁3. python 如何在 Matplotlib 中繪制垂直線4. JAVA教程:解析Java的多線程機制(4)5. 詳解Android 消息處理機制6. Java使用5個線程計算數(shù)組之和7. 探究Android客戶端網(wǎng)絡(luò)預(yù)連接優(yōu)化機制8. Java并發(fā)線程之線程池的知識總結(jié)9. java高級應(yīng)用:線程池的全面講解(干貨)10. Java Netty實現(xiàn)心跳機制過程解析
排行榜
