国产美女一级毛片精品久久久|婷婷影院在线综合免费视频|最新国产午夜精品视频成人|久久精品九九无码免费

如何實現(xiàn)Java多線程間發(fā)信及守護線程?

來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-04-24 11:04:00

        Java多線程精要:

  線程組

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

  線程間發(fā)信

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

  屏蔽同步

  當對一個線程調(diào)用wait()時,該線程就被有效阻塞,只到另一個線程對同一個對象調(diào)用notify()或notifyAll()為止。因此,在前一個示例中,不同的線程在完成他們的工作以后將調(diào)用waitForAll()函數(shù),最后一個線程將觸發(fā)notifyAll()函數(shù),該函數(shù)將釋放所有的線程。第三個函數(shù) notify() 只通知一個正在等待的線程,當對每次只能由一個線程使用的資源進行訪問限制時,這個函數(shù)很有用。但是,不可能預知哪個線程會獲得這個通知,因為這取決于 Java 虛擬機 (JVM) 調(diào)度算法。

  將 CPU 讓給另一個線程

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

  守護線程

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

上一篇:如何實現(xiàn)一個Java線程池?
下一篇:如何去掉java項目啟動時的DOS黑屏?

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學校地址: 長沙市天心區(qū)團結(jié)路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權(quán)所有

湘ICP備14017520號-3

關(guān)注我們
在線咨詢
嘿,我來幫您!