來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-04-26 10:52:21
Java多線程操作在運(yùn)行的時候會有不少的問題困擾著我們。我們需要不斷的學(xué)習(xí)以便于解決這些難題。下面我們就看看如何才能掌握相關(guān)的語法知識解決這些問題。
Java多線程操作談到阻塞,就不能不談一談死鎖,略一分析就能發(fā)現(xiàn),suspend() 方法和不指定超時期限的 waIT() 方法的調(diào)用都可能產(chǎn)生死鎖。遺憾的是,Java 并不在語言級別上支持死鎖的避免,我們在編程中必須小心地避免死鎖。
以上我們對 Java多線程操作 中實現(xiàn)線程阻塞的各種方法作了一番分析,我們重點(diǎn)分析了 waIT() 和 notify()方法,因為它們的功能最強(qiáng)大,使用 也最靈活,但是這也導(dǎo)致了它們的效率較低,較容易出錯。實際使用中我們應(yīng)該靈活使用各種方法,以便更好地達(dá)到我們的目的。
Java多線程操作中守護(hù)線程
守護(hù)線程是一類特殊的線程,它和普通線程的區(qū)別在于它并不是應(yīng)用程序的核心部分,當(dāng)一個應(yīng)用程序的所有非守護(hù)線程終止運(yùn)行時,即使仍然有守護(hù)線程在運(yùn) 行,應(yīng)用程序也將終止,反之,只要有一個非守護(hù)線程在運(yùn)行,應(yīng)用程序就不會終止。守護(hù)線程一般被用于在后臺為其它線程提供服務(wù)。
可以通過調(diào)用方法 isDaemon() 來判斷一個線程是否是守護(hù)線程,也可以調(diào)用方法 setDaemon() 來將一個線程設(shè)為守護(hù)線程。
Java多線程操作組
線程組是一個 Java多線程操作 特有的概念,在 Java 中,線程組是類ThreadGroup 的對象,每個線程都隸屬于唯一一個線程組,這個線程組在線程創(chuàng)建時指定并在線程的整個生命期內(nèi)都不能更改。
你可以通過調(diào)用包含 ThreadGroup 類型參數(shù)的 Thread 類構(gòu)造函數(shù)來指定線程屬的線程組,若沒有指定,則線程缺省地隸屬于名為 system 的系統(tǒng)線程組。
在 Java 中,除了預(yù)建的系統(tǒng)線程組外,所有線程組都必須顯式創(chuàng)建。在 Java 中,除系統(tǒng)線程組外的每個線程組又隸屬于另一個線程組,你可以在 創(chuàng)建線程組時指定其所隸屬的線程組,若沒有指定,則缺省地隸屬于系統(tǒng)線程組。這樣,所有線程組組成了一棵以系統(tǒng)線程組為根的樹。
Java 允許我們對一個線程組中的所有線程同時進(jìn)行操作,比如我們可以通過調(diào)用線程組的相應(yīng)方法來設(shè)置其中所有線程的優(yōu)先級,也可以啟動或阻塞其中的所有線程。
Java多線程操作 的線程組機(jī)制的另一個重要作用是線程安全。線程組機(jī)制允許我們通過分組來區(qū)分有不同安全特性的線程,對不同組的線程進(jìn)行不同的處理,還可以通過線程組的分層結(jié)構(gòu)來支持不對等安全措施的采用。
Java多線程操作 的 ThreadGroup 類提供了大量的方法來方便我們對線程組樹中的每一個線程組以及線程組中的每一個線程進(jìn)行操作。
Java多線程操作總結(jié)
在本文中,我們講述了 Java多線程操作的方方面面,包括創(chuàng)建線程,以及對多個線程進(jìn)行調(diào)度、管理。我們深刻認(rèn)識到了多線程編程的復(fù)雜性,以及線程切換開銷帶來的多線程程序的低效性,這也促使我們認(rèn)真地思考一個問題:我們是否需要多線程?何時需要多線程?
全程面授,不高薪都難
申請成功后,我們將在24小時內(nèi)與您聯(lián)系
招生熱線: 4008-0731-86 / 0731-82186801
學(xué)校地址: 長沙市天心區(qū)團(tuán)結(jié)路6號
Copyright © 2006 | 湖南大計信息科技有限公司 版權(quán)所有
湘ICP備14017520號-3