明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Java多線程編程精要之高級(jí)支持

[摘要]線程組   線程是被個(gè)別創(chuàng)建的,但可以將它們歸類到線程組中,以便于調(diào)試和監(jiān)視。只能在創(chuàng)建線程的同時(shí)將它與一個(gè)線程組相關(guān)聯(lián)。在使用大量線程的程序中,使用線程組組織線程可能很有幫助?梢詫⑺鼈兛醋魇怯(jì)算機(jī)上的目錄和文件結(jié)構(gòu)。   線程間發(fā)信   當(dāng)線程在繼續(xù)執(zhí)行前需要等待一個(gè)條件時(shí),僅有 synchr...
線程組

  線程是被個(gè)別創(chuàng)建的,但可以將它們歸類到線程組中,以便于調(diào)試和監(jiān)視。只能在創(chuàng)建線程的同時(shí)將它與一個(gè)線程組相關(guān)聯(lián)。在使用大量線程的程序中,使用線程組組織線程可能很有幫助?梢詫⑺鼈兛醋魇怯(jì)算機(jī)上的目錄和文件結(jié)構(gòu)。

  線程間發(fā)信

  當(dāng)線程在繼續(xù)執(zhí)行前需要等待一個(gè)條件時(shí),僅有 synchronized 關(guān)鍵字是不夠的。雖然 synchronized 關(guān)鍵字阻止并發(fā)更新一個(gè)對(duì)象,但它沒有實(shí)現(xiàn)線程間發(fā)信。Object 類為此提供了三個(gè)函數(shù):wait()、notify() 和 notifyAll()。以全球氣候預(yù)測程序?yàn)槔。這些程序通過將地球分為許多單元,在每個(gè)循環(huán)中,每個(gè)單元的計(jì)算都是隔離進(jìn)行的,直到這些值趨于穩(wěn)定,然后相鄰單元之間就會(huì)交換一些數(shù)據(jù)。所以,從本質(zhì)上講,在每個(gè)循環(huán)中各個(gè)線程都必須等待所有線程完成各自的任務(wù)以后才能進(jìn)入下一個(gè)循環(huán)。這個(gè)模型稱為 屏蔽同步,下例說明了這個(gè)模型:

  屏蔽同步

   數(shù) notify() 只通知一個(gè)正在等待的線程,當(dāng)對(duì)每次只能由一個(gè)線程使用的資源進(jìn)行訪問限制時(shí),這個(gè)函數(shù)很有用。但是,不可能預(yù)知哪個(gè)線程會(huì)獲得這個(gè)通知,因?yàn)檫@取決于 Java 虛擬機(jī) (JVM) 調(diào)度算法。

  將 CPU 讓給另一個(gè)線程

  當(dāng)線程放棄某個(gè)稀有的資源(如數(shù)據(jù)庫連接或網(wǎng)絡(luò)端口)時(shí),它可能調(diào)用 yield() 函數(shù)臨時(shí)降低自己的優(yōu)先級(jí),以便某個(gè)其他線程能夠運(yùn)行。

  守護(hù)線程

  有兩類線程:用戶線程和守護(hù)線程。用戶線程是那些完成有用工作的線程。 守護(hù)線程是那些僅提供輔助功能的線程。Thread 類提供了 setDaemon() 函數(shù)。Java 程序?qū)⑦\(yùn)行到所有用戶線程終止,然后它將破壞所有的守護(hù)線程。在 Java 虛擬機(jī) (JVM) 中,即使在 main 結(jié)束以后,如果另一個(gè)用戶線程仍在運(yùn)行,則程序仍然可以繼續(xù)運(yùn)行。