posts - 3,  comments - 2,  trackbacks - 0

          線程 java 的一大特性,它可以是給定的指令序列、給定的方法中定義的變量或者一些共享數(shù)據(jù)(類一級(jí)的變量)。 在 java 中每個(gè) 線程 有自己的堆棧和程序計(jì)數(shù)器(pc),其中堆棧是用來跟蹤 線程 的上下文(上下文是當(dāng) 線程 執(zhí)行到某處時(shí),當(dāng)前的局部變量的值),而程序計(jì)數(shù)器則用來跟蹤當(dāng)前 線程 正在執(zhí)行的指令。 

          在通常情況下,一個(gè) 線程 不能訪問另外一個(gè) 線程 的堆棧變量,而且這個(gè) 線程 必須處于如下狀態(tài)之一: 

          1.排隊(duì)狀態(tài)(ready),在用戶創(chuàng)建了一個(gè) 線程 以后,這個(gè) 線程 不會(huì)立即運(yùn)行。當(dāng) 線程 中的方法start()被調(diào)用時(shí),這個(gè) 線程 就會(huì)進(jìn)行排隊(duì)狀態(tài),等待調(diào)度程序?qū)⑺D(zhuǎn)入運(yùn)行狀態(tài)(running)。當(dāng)一個(gè)進(jìn)程被執(zhí)行后它也可以進(jìn)行排隊(duì)狀態(tài)。如果調(diào)度程序允許的話,通過調(diào)用方法yield()就可以將進(jìn)程放入排隊(duì)狀態(tài)。 

          2.運(yùn)行狀態(tài)(running),當(dāng)調(diào)度程序?qū)pu的運(yùn)行時(shí)間分配給一個(gè) 線程 ,這個(gè) 線程 就進(jìn)入了運(yùn)行狀態(tài)開始運(yùn)行。 

          3.等待狀態(tài)(waiting),很多原因都可以導(dǎo)致 線程 處于等待狀態(tài),例如 線程 執(zhí)行過程中被暫停,或者是等待i/o請(qǐng)求的完成而進(jìn)入等待狀態(tài)。 

          java 中不同的 線程 具有不同的優(yōu)先級(jí),高優(yōu)先級(jí)的 線程 可以安排在低優(yōu)先級(jí) 線程 之前完成。如果多個(gè) 線程 具有相同的優(yōu)先級(jí), java 會(huì)在不同的 線程 之間切換運(yùn)行。一個(gè)應(yīng)用程序可以通過使用 線程 中的方法setpriority()來設(shè)置 線程 的優(yōu)先級(jí),使用方法getpriority()來獲得一個(gè) 線程 的優(yōu)先級(jí)。 

          線程 的生命周期

          一個(gè) 線程 的的生命周期可以分成兩階段:生存(alive)周期和死亡(dead)周期,其中生存周期又包括運(yùn)行狀態(tài)(running)和等待狀態(tài)(waiting)。當(dāng)創(chuàng)建一個(gè)新 線程 后,這個(gè) 線程 就進(jìn)入了排隊(duì)狀態(tài)(ready),當(dāng) 線程 中的方法start()被調(diào)用時(shí), 線程 就進(jìn)入生存周期,這時(shí)它的方法isalive()始終返回真值,直至 線程 進(jìn)入死亡狀態(tài)。 

          線程 的實(shí)現(xiàn)

          有兩種方法可以實(shí)現(xiàn) 線程 ,一種是擴(kuò)展 java .lang.thread類,另一種是通過 java .lang.runnable接口。 

          posted on 2008-04-27 12:39 Mr. Michael.Q 閱讀(173) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 托里县| 明星| 阿拉尔市| 济阳县| 十堰市| 汉寿县| 莲花县| 耒阳市| 永善县| 手机| 婺源县| 和平县| 得荣县| 深水埗区| 邢台市| 镇沅| 镇原县| 大化| 安西县| 田东县| 临桂县| 商城县| 台安县| 涿州市| 巴中市| 石首市| 家居| 桂东县| 临城县| 无棣县| 乌什县| 抚州市| 蓬溪县| 阿荣旗| 织金县| 孟连| 涿州市| 襄垣县| 苏州市| 永善县| 镇安县|