Java系統(tǒng)線程組如何才能安全組建
我們?cè)谑褂肑ava系統(tǒng)線程組的時(shí)候要注意很多的事情,下面我們就來看看有關(guān)這一問題是如何解決的。在Java系統(tǒng)線程組中,除了預(yù)建的系統(tǒng)線程組外,所有線程組都必須顯式創(chuàng)建。
在 Java 中,除系統(tǒng)線程組外的每個(gè)線程組又隸屬于另一個(gè)線程組,你可以在創(chuàng)建線程組時(shí)指定其所隸屬的線程組,若沒有指定,則缺省地隸屬于系統(tǒng)線程組。這樣,所有線程組組成了一棵以系統(tǒng)線程組為根的樹。 #t#
Java 允許我們對(duì)一個(gè)線程組中的所有線程同時(shí)進(jìn)行操作,比如我們可以通過調(diào)用線程組的相應(yīng)方法來設(shè)置其中所有線程的優(yōu)先級(jí),也可以啟動(dòng)或阻塞其中的所有線程。
Java系統(tǒng)線程組 的線程組機(jī)制的另一個(gè)重要作用是線程安全。線程組機(jī)制允許我們通過分組來區(qū)分有不同安全特性的線程,對(duì)不同組的線程進(jìn)行不同的處理,還可以通過線程組的分層結(jié)構(gòu)來支持不對(duì)等安全措施的采用。
Java系統(tǒng)線程組 的 ThreadGroup 類提供了大量的方法來方便我們對(duì)線程組樹中的每一個(gè)線程組以及線程組中的每一個(gè)線程進(jìn)行操作。
在本文中,我們講述了 Java 多線程編程的方方面面,包括創(chuàng)建線程,以及對(duì)多個(gè)線程進(jìn)行調(diào)度、管理。我們深刻認(rèn)識(shí)到了多線程編程的復(fù)雜性,以及線程切換開銷帶來的多線程程序的低效性,這也促使我們認(rèn)真地思考一個(gè)問題:我們是否需要多線程?何時(shí)需要多線程?
多線程的核心在于多個(gè)代碼塊并發(fā)執(zhí)行,本質(zhì)特點(diǎn)在于各代碼塊之間的代碼是亂序執(zhí)行的。我們的程序是否需要多線程,就是要看這是否也是它的內(nèi)在特點(diǎn)。
假如我們的程序根本不要求多個(gè)代碼塊并發(fā)執(zhí)行,那自然不需要使用多線程;假如我們的程序雖然要求多個(gè)代碼塊并發(fā)執(zhí)行,但是卻不要求亂序,則我們完全可以用一個(gè)循環(huán)來簡(jiǎn)單高效地實(shí)現(xiàn),也不需要使用多線程;只有當(dāng)它完全符合多線程的特點(diǎn)時(shí),多線程機(jī)制對(duì)線程間通信和線程管理的強(qiáng)大支持才能有用武之地,這時(shí)使用多線程才是值得的。