成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

您的位置:首頁技術(shù)文章
文章詳情頁

JAVA教程:解析Java的多線程機(jī)制(5)

瀏覽:107日期:2024-07-02 18:15:41
內(nèi)容: Java線程的管理 線程的狀態(tài)控制 在這里需要明確的是:無論采用繼承Thread類還是實(shí)現(xiàn)Runnable接口來實(shí)現(xiàn)應(yīng)用程序的多線程能力,都需要在該類中定義用于完成實(shí)際功能的run方法,這個run方法稱為線程體(Thread Body)。按照線程體在計算機(jī)系統(tǒng)內(nèi)存中的狀態(tài)不同,可以將線程分為創(chuàng)建、就緒、運(yùn)行、睡眠、掛起和死亡等類型。這些線程狀態(tài)類型下線程的特征為: 創(chuàng)建狀態(tài):當(dāng)利用new關(guān)鍵字創(chuàng)建線程對象實(shí)例后,它僅僅作為一個對象實(shí)例存在,JVM沒有為其分配CPU時間片等線程運(yùn)行資源; 就緒狀態(tài):在處于創(chuàng)建狀態(tài)的線程中調(diào)用start方法將線程的狀態(tài)轉(zhuǎn)換為就緒狀態(tài)。這時,線程已經(jīng)得到除CPU時間之外的其它系統(tǒng)資源,只等JVM的線程調(diào)度器按照線程的優(yōu)先級對該線程進(jìn)行調(diào)度,從而使該線程擁有能夠獲得CPU時間片的機(jī)會。 睡眠狀態(tài):在線程運(yùn)行過程中可以調(diào)用sleep方法并在方法參數(shù)中指定線程的睡眠時間將線程狀態(tài)轉(zhuǎn)換為睡眠狀態(tài)。這時,該線程在不釋放占用資源的情況下停止運(yùn)行指定的睡眠時間。時間到達(dá)后,線程重新由JVM線程調(diào)度器進(jìn)行調(diào)度和管理。 掛起狀態(tài):可以通過調(diào)用suspend方法將線程的狀態(tài)轉(zhuǎn)換為掛起狀態(tài)。這時,線程將釋放占用的所有資源,由JVM調(diào)度轉(zhuǎn)入臨時存儲空間,直至應(yīng)用程序調(diào)用resume方法恢復(fù)線程運(yùn)行。 死亡狀態(tài):當(dāng)線程體運(yùn)行結(jié)束或者調(diào)用線程對象的stop方法后線程將終止運(yùn)行,由JVM收回線程占用的資源。 在Java線程類中分別定義了相應(yīng)的方法,用于在應(yīng)用程序中對線程狀態(tài)進(jìn)行控制和管理。 線程的調(diào)度 線程調(diào)用的意義在于JVM應(yīng)對運(yùn)行的多個線程進(jìn)行系統(tǒng)級的協(xié)調(diào),以避免多個線程爭用有限資源而導(dǎo)致應(yīng)用系統(tǒng)死機(jī)或者崩潰。 為了線程對于操作系統(tǒng)和用戶的重要性區(qū)分開,Java定義了線程的優(yōu)先級策略。Java將線程的優(yōu)先級分為10個等級,分別用1-10之間的數(shù)字表示。數(shù)字越大表明線程的級別越高。相應(yīng)地,在Thread類中定義了表示線程最低、最高和普通優(yōu)先級的成員變量MIN_PRIORITY、MAX_PRIORITY和NORMAL_PRIORITY,代表的優(yōu)先級等級分別為1、10和5。當(dāng)一個線程對象被創(chuàng)建時,其默認(rèn)的線程優(yōu)先級是5。 為了控制線程的運(yùn)行策略,Java定義了線程調(diào)度器來監(jiān)控系統(tǒng)中處于就緒狀態(tài)的所有線程。線程調(diào)度器按照線程的優(yōu)先級決定那個線程投入處理器運(yùn)行。在多個線程處于就緒狀態(tài)的條件下,具有高優(yōu)先級的線程會在低優(yōu)先級線程之前得到執(zhí)行。線程調(diào)度器同樣采用'搶占式'策略來調(diào)度線程執(zhí)行,即當(dāng)前線程執(zhí)行過程中有較高優(yōu)先級的線程進(jìn)入就緒狀態(tài),則高優(yōu)先級的線程立即被調(diào)度執(zhí)行。具有相同優(yōu)先級的所有線程采用輪轉(zhuǎn)的方式來共同分配CPU時間片。 在應(yīng)用程序中設(shè)置線程優(yōu)先級的方法很簡單,在創(chuàng)建線程對象之后可以調(diào)用線程對象的setPriority方法改變該線程的運(yùn)行優(yōu)先級,同樣可以調(diào)用getPriority方法獲取當(dāng)前線程的優(yōu)先級。 在Java中比較特殊的線程是被稱為守護(hù)(Daemon)線程的低級別線程。這個線程具有最低的優(yōu)先級,用于為系統(tǒng)中的其它對象和線程提供服務(wù)。將一個用戶線程設(shè)置為守護(hù)線程的方式是在線程對象創(chuàng)建之前調(diào)用線程對象的setDaemon方法。典型的守護(hù)線程例子是JVM中的系統(tǒng)資源自動回收線程,它始終在低級別的狀態(tài)中運(yùn)行,用于實(shí)時監(jiān)控和管理系統(tǒng)中的可回收資源。 線程分組管理 Java定義了在多線程運(yùn)行系統(tǒng)中的線程組(ThreadGroup)對象,用于實(shí)現(xiàn)按照特定功能對線程進(jìn)行集中式分組管理。用戶創(chuàng)建的每個線程均屬于某線程組,這個線程組可以在線程創(chuàng)建時指定,也可以不指定線程組以使該線程處于默認(rèn)的線程組之中。但是,一旦線程加入某線程組,該線程就一直存在于該線程組中直至線程死亡,不能在中途改變線程所屬的線程組。 當(dāng)Java的Application應(yīng)用程序運(yùn)行時,JVM創(chuàng)建名稱為main的線程組。除非單獨(dú)指定,在該應(yīng)用程序中創(chuàng)建的線程均屬于main線程組。在main線程組中可以創(chuàng)建其它名稱的線程組并將其它線程加入到該線程組中,依此類推,構(gòu)成線程和線程組之間的樹型管理和繼承關(guān)系。 與線程類似,可以針對線程組對象進(jìn)行線程組的調(diào)度、狀態(tài)管理以及優(yōu)先級設(shè)置等。在對線程組進(jìn)行管理過程中,加入到某線程組中的所有線程均被看作統(tǒng)一的對象。 轉(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)文章:
主站蜘蛛池模板: 欧美日韩一区二区三区视视频 | 国产高清免费影视在线观看 | 亚洲欧美自拍偷拍 | 长腿嫩模打开双腿呻吟 | 九九九九九九精品免费 | 男女猛烈无遮掩免费视频 | 成人韩免费网站 | 日本特黄特色大片免费视频网站 | 国产精品99久久99久久久看片 | 国产午夜亚洲精品第一区 | 精品成人免费视频 | 久久亚洲国产最新网站 | 亚洲精品国自产拍在线观看 | 国产第一页久久亚洲欧美国产 | 男女视频免费 | 久久久亚洲欧美综合 | 三级黄色片网址 | 免费看黄色片的网站 | 久久精品视频网站 | 久久w5ww成w人免费不卡 | 免费看a级片 | 国产美女精品三级在线观看 | 久久亚洲国产高清 | 米奇777色狠狠8888影视 | 亚洲综合色一区二区三区另类 | 韩日精品| 在线久 | 欧美有码在线观看 | 免费黄色毛片视频 | 成人在线播放视频 | 亚洲欧美卡通动漫丝袜美腿 | 日韩国产三级 | 精品毛片视频 | 成人国产精品免费网站 | a一级免费视频 | 男人天堂免费 | 久久久久欧美精品网站 | 毛片精品| 国产成综合 | 精品成人在线视频 | 1024色淫免费视频 |