浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » 通信網(wǎng)絡(luò)

Java的線程機制

發(fā)布時間:2008/5/27 0:00:00 訪問次數(shù):471

作者:清華大學計算機系(100084) 戴梅萼來 源:《電子技術(shù)應(yīng)用》

java的線程機制

摘 要: 多線程機制是java的重要技術(shù),闡述了線程和進程的差別;java中線程4個狀態(tài)之間的轉(zhuǎn)換;并結(jié)合例子說明了兩種創(chuàng)建線程的方法。

關(guān)鍵詞: 線程 消亡 阻塞 調(diào)度

線程是指程序中能順序執(zhí)行的一個序列。一個線程只有一個入口點 但可能有幾個出口點 不過,每個時刻的執(zhí)行點總是只有一個。線程是不能獨立運行的程序,而只是某個整體程序內(nèi)部的一個順序執(zhí)行流。

多線程是java的一個重要特點。如果一個程序是單線程的,那么,任何時刻都只有一個執(zhí)行點。這種單線程執(zhí)行方法使系統(tǒng)運行效率低,而且,由于必須依靠中斷來處理輸入/輸出。所以,當出現(xiàn)頻繁輸入/輸出或者有優(yōu)先級較低的中斷請求時,實時性就變得很差。多線程系統(tǒng)可以避免這個缺點。所謂多線程,就是通過系統(tǒng)的調(diào)度使幾個具有不同功能的程序流即線程同時并行地運行。

在單處理器計算機系統(tǒng)中,實際上是不可能使多個線程真正并行運行的,而要通過系統(tǒng)用極短的時間、極快的速度對多個線程進行切換,宏觀上形成多個線程并發(fā)執(zhí)行的效果。

1 線程和進程機制上的差別

線程和進程很相象,它們都是程序的一個順序執(zhí)行序列,但兩者又有區(qū)別。進程是一個實體,每個進程有自己獨立的狀態(tài),并有自己的專用數(shù)據(jù)段,創(chuàng)建進程時, 必須建立和復(fù)制其專用數(shù)據(jù)段,線程則互相共享數(shù)據(jù)段。同一個程序中的所有線程只有一個數(shù)據(jù)段, 所以, 創(chuàng)建線程時不必重新建立和復(fù)制數(shù)據(jù)段。由于數(shù)據(jù)段建立和復(fù)制這方面的差異,使線程的建立和線程間的切換速度大大優(yōu)于進程,另一方面,線程又具備進程的大多數(shù)優(yōu)點。

假設(shè)銀行系統(tǒng)辦理存款和取款手續(xù),將帳本看成數(shù)據(jù)段。如果按進程這種機制,那么,當儲戶去存/取款時,銀行應(yīng)先把帳本復(fù)制一遍,為儲戶建立一個獨立的帳本再結(jié)算。如果按線程機制, 那么,銀行里所有的出納員都用同一個帳本,儲戶來辦存/取款時,也從這個帳本直接結(jié)算。用線程機制省去了數(shù)據(jù)段復(fù)制這一步顯然是線程獨具的特點。

由于多個線程共享一個數(shù)據(jù)段,所以,也出現(xiàn)了數(shù)據(jù)訪問過程的互斥和同步問題,這使系統(tǒng)管理功能變得相對復(fù)雜。

總的來說,一個多線程系統(tǒng)在提高系統(tǒng)的輸入/輸出速度、有效利用系統(tǒng)資源、改善計算機通信功能以及發(fā)揮多處理器硬件功能方面顯示了很大優(yōu)勢。因此,一些最新的操作系統(tǒng)如windows95、windows98、windows nt等都提供了對多線程的支持。但是,在多線程操作系統(tǒng)下設(shè)計多線程的程序仍然是一個比較復(fù)雜和困難的工作。由于需要解決對數(shù)據(jù)段的共享,所以,原則上應(yīng)該從程序設(shè)計角度采用加鎖和釋放措施,稍有不慎,便會使系統(tǒng)產(chǎn)生管理上的混亂。 而java從語言一級提供對多線程的支持,這樣,可由語言和運行系統(tǒng)聯(lián)合提供對共享數(shù)據(jù)段的管理功能和同步機制,使得多線程并行程序設(shè)計相對比較容易。

2 java線程的生命周期

每個線程都是和生命周期相聯(lián)系的,一個生命周期含有多個狀態(tài),這些狀態(tài)間可以互相轉(zhuǎn)化。

java的線程的生命周期可以分為4個狀態(tài);創(chuàng)建(new)狀態(tài);可運行(runnable)狀態(tài);不執(zhí)行(notrunnable)狀態(tài);消亡(dead)狀態(tài)。

創(chuàng)建狀態(tài)是指創(chuàng)建一個線程對應(yīng)的對象的過程,java系統(tǒng)中,些對象都是從java.lang包內(nèi)一個稱為thread的類用關(guān)鍵字new創(chuàng)建的。剛創(chuàng)建的線程不能執(zhí)行,必須向系統(tǒng)進行注冊、分配必要的資源后才能進入可運行狀態(tài),這個步驟是由start操作完成的,而處于可運行狀態(tài)的線程也未必一定處于運行中,它有可能由于外部的i/o請求而處于不運行狀態(tài)。進入消亡狀態(tài)后,此線程就不再存在了。

一個線程創(chuàng)建之后,總是處于其生命周期的4個狀態(tài)之一中,線程的狀態(tài)表明此線程當前正在進行的活動,而線程的狀態(tài)是可以通過程序來進行控制的,就是說,可以對線程進行操作來改變狀態(tài)。 這些操作包括啟動(start)、終止(stop)、睡眠(sleep)、掛起(suspend)、恢復(fù)(resume)、等待(wait)和通知(notify)。每一個操作都對應(yīng)了一個方法 這些方法是由軟件包java.lang提供的。通過各種操作,線程的4個狀態(tài)之間可按圖1所示進行轉(zhuǎn)換。

2.1 創(chuàng)建(new)狀態(tài)

作者:清華大學計算機系(100084) 戴梅萼來 源:《電子技術(shù)應(yīng)用》

java的線程機制

摘 要: 多線程機制是java的重要技術(shù),闡述了線程和進程的差別;java中線程4個狀態(tài)之間的轉(zhuǎn)換;并結(jié)合例子說明了兩種創(chuàng)建線程的方法。

關(guān)鍵詞: 線程 消亡 阻塞 調(diào)度

線程是指程序中能順序執(zhí)行的一個序列。一個線程只有一個入口點 但可能有幾個出口點 不過,每個時刻的執(zhí)行點總是只有一個。線程是不能獨立運行的程序,而只是某個整體程序內(nèi)部的一個順序執(zhí)行流。

多線程是java的一個重要特點。如果一個程序是單線程的,那么,任何時刻都只有一個執(zhí)行點。這種單線程執(zhí)行方法使系統(tǒng)運行效率低,而且,由于必須依靠中斷來處理輸入/輸出。所以,當出現(xiàn)頻繁輸入/輸出或者有優(yōu)先級較低的中斷請求時,實時性就變得很差。多線程系統(tǒng)可以避免這個缺點。所謂多線程,就是通過系統(tǒng)的調(diào)度使幾個具有不同功能的程序流即線程同時并行地運行。

在單處理器計算機系統(tǒng)中,實際上是不可能使多個線程真正并行運行的,而要通過系統(tǒng)用極短的時間、極快的速度對多個線程進行切換,宏觀上形成多個線程并發(fā)執(zhí)行的效果。

1 線程和進程機制上的差別

線程和進程很相象,它們都是程序的一個順序執(zhí)行序列,但兩者又有區(qū)別。進程是一個實體,每個進程有自己獨立的狀態(tài),并有自己的專用數(shù)據(jù)段,創(chuàng)建進程時, 必須建立和復(fù)制其專用數(shù)據(jù)段,線程則互相共享數(shù)據(jù)段。同一個程序中的所有線程只有一個數(shù)據(jù)段, 所以, 創(chuàng)建線程時不必重新建立和復(fù)制數(shù)據(jù)段。由于數(shù)據(jù)段建立和復(fù)制這方面的差異,使線程的建立和線程間的切換速度大大優(yōu)于進程,另一方面,線程又具備進程的大多數(shù)優(yōu)點。

假設(shè)銀行系統(tǒng)辦理存款和取款手續(xù),將帳本看成數(shù)據(jù)段。如果按進程這種機制,那么,當儲戶去存/取款時,銀行應(yīng)先把帳本復(fù)制一遍,為儲戶建立一個獨立的帳本再結(jié)算。如果按線程機制, 那么,銀行里所有的出納員都用同一個帳本,儲戶來辦存/取款時,也從這個帳本直接結(jié)算。用線程機制省去了數(shù)據(jù)段復(fù)制這一步顯然是線程獨具的特點。

由于多個線程共享一個數(shù)據(jù)段,所以,也出現(xiàn)了數(shù)據(jù)訪問過程的互斥和同步問題,這使系統(tǒng)管理功能變得相對復(fù)雜。

總的來說,一個多線程系統(tǒng)在提高系統(tǒng)的輸入/輸出速度、有效利用系統(tǒng)資源、改善計算機通信功能以及發(fā)揮多處理器硬件功能方面顯示了很大優(yōu)勢。因此,一些最新的操作系統(tǒng)如windows95、windows98、windows nt等都提供了對多線程的支持。但是,在多線程操作系統(tǒng)下設(shè)計多線程的程序仍然是一個比較復(fù)雜和困難的工作。由于需要解決對數(shù)據(jù)段的共享,所以,原則上應(yīng)該從程序設(shè)計角度采用加鎖和釋放措施,稍有不慎,便會使系統(tǒng)產(chǎn)生管理上的混亂。 而java從語言一級提供對多線程的支持,這樣,可由語言和運行系統(tǒng)聯(lián)合提供對共享數(shù)據(jù)段的管理功能和同步機制,使得多線程并行程序設(shè)計相對比較容易。

2 java線程的生命周期

每個線程都是和生命周期相聯(lián)系的,一個生命周期含有多個狀態(tài),這些狀態(tài)間可以互相轉(zhuǎn)化。

java的線程的生命周期可以分為4個狀態(tài);創(chuàng)建(new)狀態(tài);可運行(runnable)狀態(tài);不執(zhí)行(notrunnable)狀態(tài);消亡(dead)狀態(tài)。

創(chuàng)建狀態(tài)是指創(chuàng)建一個線程對應(yīng)的對象的過程,java系統(tǒng)中,些對象都是從java.lang包內(nèi)一個稱為thread的類用關(guān)鍵字new創(chuàng)建的。剛創(chuàng)建的線程不能執(zhí)行,必須向系統(tǒng)進行注冊、分配必要的資源后才能進入可運行狀態(tài),這個步驟是由start操作完成的,而處于可運行狀態(tài)的線程也未必一定處于運行中,它有可能由于外部的i/o請求而處于不運行狀態(tài)。進入消亡狀態(tài)后,此線程就不再存在了。

一個線程創(chuàng)建之后,總是處于其生命周期的4個狀態(tài)之一中,線程的狀態(tài)表明此線程當前正在進行的活動,而線程的狀態(tài)是可以通過程序來進行控制的,就是說,可以對線程進行操作來改變狀態(tài)。 這些操作包括啟動(start)、終止(stop)、睡眠(sleep)、掛起(suspend)、恢復(fù)(resume)、等待(wait)和通知(notify)。每一個操作都對應(yīng)了一個方法 這些方法是由軟件包java.lang提供的。通過各種操作,線程的4個狀態(tài)之間可按圖1所示進行轉(zhuǎn)換。

2.1 創(chuàng)建(new)狀態(tài)

相關(guān)IC型號

熱門點擊

 

推薦技術(shù)資料

耳機的焊接
    整機電路簡單,用洞洞板搭線比較方便。EM8621實際采... [詳細]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13692101218  13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!