六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

破除java神話之線程按優先級喚醒

[摘要]在編寫多線程代碼的時候經常發生多個線程等待一個事件的情況。這種情況多發生于多個線程在同步方法或者同步塊內調用wait方法等待同一個被鎖住的對象。當另一個鎖住該對象的線程從同步方法或者同步塊中調用notify或者notifyAll方法時這些等待線程被喚醒。notify調用僅僅喚醒一個線程,因此如果有...
在編寫多線程代碼的時候經常發生多個線程等待一個事件的情況。這種情況多發生于多個線程在同步方法或者同步塊內調用wait方法等待同一個被鎖住的對象。當另一個鎖住該對象的線程從同步方法或者同步塊中調用notify或者notifyAll方法時這些等待線程被喚醒。notify調用僅僅喚醒一個線程,因此如果有多個線程正處于等待狀態,那么不會有對鎖的競爭。另一方面,notifyAll調用喚醒所有的等待線程而造成競爭,然而只有一個線程能夠得到鎖,其它的都會被阻塞。

  當多個線程處于等待狀態時的問題是當調用notify或者notifyAll方法后哪一個線程將運行?很多程序員不正確的假定存在一種預定義的順序表明線程如何被喚醒。一些認為是高優先級的線程首先被喚醒,另一些可能認為是等待了最長時間的線程首先被喚醒。不幸的是上面的假設都是不對的。在這些情況下,哪個線程被喚醒是不確定的,也許是最高優先級的線程,也許是等待最長的線程,但是沒有保證。

  線程的優先級不能決定它是否被喚醒(在使用notify方法的情況下)或者在多線程環境下的喚醒順序(在使用notifyAll方法的情況下)。因此,因此你永遠不應該假設線程的喚醒順序。另外,你也永遠不應該對搶占過程中的線程調度做任何假設。線程調度是實現相關的(implementation-dependent),不同的平臺的調度機制是不同的。如果你想你的程序具有可移植性就不應該做這樣的不明智的假設。

  另外,notifyAll和notify方法沒有提供喚醒等待進程的確定順序,具體的順序是依賴JVM的,并且notifyAll所能保證的事情不超過喚醒所有的等待線程。這個狀況使得當你想以某種特定的順序喚醒多個線程時會出現問題。

  有兩種辦法達到控制線程的喚醒順序:

  1、使用精確喚醒模式
  
  (Specific notification pattern)

  2、使用實現了實時規范的JVM(RTSJ,Real-Time Specification for Java)(譯者注:這其實不應該算一種好的方法,這加大了對特定JVM的依賴,打破了可移植性)

  精確喚醒模式由Tom Cargill開發,詳細說明了如何控制調用notify和notifyAll時的線程的喚醒順序。這個實現是通過對需要被一起喚醒的每個線程或者每一套線程設置一個單獨的鎖達到的。通過對特定的鎖進行釋放而達到可定義的通知順序。

  如果實現合適,那么這種模式的執行代價是最小的。然而不可避免的要增加編碼的復雜性,但是這個復雜性可以通過你得到的控制性抵消掉,如果你需要這樣的控制,你可以考慮實現這個模式。

  RTSJ改變了某些java語義的標準行為。其中之一就是確保等待線程按照優先級排序。因此當多個線程處于等待狀態而調用了notify或者notifyAll,那么具有最高優先級的那個將首先執行,其它的繼續等待。

  通常,這不是推薦的做法,除非是進行實時編程。已經有幾種不同的折衷方案使得java可以進行實時編程。創建RTSJ的最重要的一個原則就是及時性比執行速度更重要!



主站蜘蛛池模板: 性www| 污污视频在线 | 亚洲欧美日韩在线线精品 | 午夜视频网站在线观看 | 日韩午夜在线视频不卡片 | 天天操夜夜草 | 色天使久久 | 中文字幕伦伦在线中文字 | 天天躁夜夜躁狠狠躁2021西西 | 日本午夜高清视频 | 中文字幕国产专区 | 亚洲国产精品久久卡一 | 中文字幕乱视频 | 午夜久久网 | 亚洲va久久久噜噜噜久久狠狠 | 野外三级国产在线观看 | 一级做性色a爰片久久毛片免费 | 视频一区二区中文字幕 | 五月天婷婷在线观看视频 | 四虎最新网站 | 五月激情综合网 | 日本色影 | 天天狠天天透 | 日韩高清图色 | 天天躁夜夜躁狠狠躁2023 | 在线观看中文字幕第一页 | 日本高清色本免费现在观看 | 亚洲人成人77777在线播放 | 五月婷婷久 | 欧洲性开放大片免费观看视频 | 日韩一区二紧身裤 | 探花在线| 手机在线日韩高清理论片 | 在线视频你懂的国产福利 | 亚洲春黄在线观看 | 午夜在线网址 | 五月天色婷婷丁香 | 日本视频免费观看 | 天天狠天天透天天伊人 | 四虎成人4hutv影院 | 日本高清视频成人网www |