最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java線程中sleep和wait的區(qū)別詳細介紹

 更新時間:2012年11月14日 11:07:32   作者:  
Java中的多線程是一種搶占式的機制,而不是分時機制。搶占式的機制是有多個線程處于可運行狀態(tài),但是只有一個線程在運行
Java中的多線程是一種搶占式的機制,而不是分時機制。搶占式的機制是有多個線程處于可運行狀態(tài),但是只有一個線程在運行。
共同點
1. 他們都是在多線程的環(huán)境下,都可以在程序的調(diào)用處阻塞指定的毫秒數(shù),并返回。
2. wait()和sleep()都可以通過interrupt()方法 打斷線程的暫停狀態(tài) ,從而使線程立刻拋出InterruptedException。
如果線程A希望立即結(jié)束線程B,則可以對線程B對應(yīng)的Thread實例調(diào)用interrupt方法。如果此刻線程B正在wait/sleep/join,則線程B會立刻拋出InterruptedException,在catch() {} 中直接return即可安全地結(jié)束線程。
需要注意的是,InterruptedException是線程自己從內(nèi)部拋出的,并不是interrupt()方法拋出的。對某一線程調(diào)用 interrupt()時,如果該線程正在執(zhí)行普通的代碼,那么該線程根本就不會拋出InterruptedException。但是,一旦該線程進入到 wait()/sleep()/join()后,就會立刻拋出InterruptedException 。
不同點
1.Thread類的方法:sleep(),yield()等
Object的方法:wait()和notify()等
2.每個對象都有一個鎖來控制同步訪問。Synchronized關(guān)鍵字可以和對象的鎖交互,來實現(xiàn)線程的同步。
sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他線程可以使用同步控制塊或者方法。
3.wait,notify和notifyAll只能在同步控制方法或者同步控制塊里面使用,而sleep可以在任何地方使用
4.sleep必須捕獲異常,而wait,notify和notifyAll不需要捕獲異常
線程的調(diào)度
線程調(diào)度器按線程的優(yōu)先級高低選擇高優(yōu)先級線程(進入運行中狀態(tài))執(zhí)行,同時線程調(diào)度是搶先式調(diào)度,即如果在當(dāng)前線程執(zhí)行過程中,一個更高優(yōu)先級的線程進入可運行狀態(tài),則這個線程立即被調(diào)度執(zhí)行。
搶先式調(diào)度又分為:時間片方式和獨占方式。在時間片方式下,當(dāng)前活動線程執(zhí)行完當(dāng)前時間片后,如果有其他處于就緒狀態(tài)的相同優(yōu)先級的線程,系統(tǒng)會將執(zhí)行權(quán)交給其他就緒態(tài)的同優(yōu)先級線程;當(dāng)前活動線程轉(zhuǎn)入等待執(zhí)行隊列,等待下一個時間片的調(diào)度。
在獨占方式下,當(dāng)前活動線程一旦獲得執(zhí)行權(quán),將一直執(zhí)行下去,直到執(zhí)行完畢或由于某種原因主動放棄CPU,或者是有一高優(yōu)先級的線程處于就緒狀態(tài)。
舉例說明
首先我想說的是:在多線程編程中,經(jīng)常會使用sleep與wait操作,我們理解sleep與wait的最大區(qū)別是sleep等待是不會釋放當(dāng)前鎖,而wait則反之。我今天想到一個現(xiàn)實例子來比較這兩者的區(qū)別。
我以去火車站買票的例子來說明。我們?nèi)セ疖囌举I票,當(dāng)站到售票窗口前要告訴售票員需要到哪里的票,什么時候發(fā)車的,售票員就通過電腦去給我們打印票,這個時候我們就得等待。如果我們用sleep模式,就得一直站在那里等,直到售票員給我們票;如果用wait模式,這個時候就離開我們所站的位置,后面的票友就可能站到我當(dāng)前的位置(窗口前),我們要取票的話,就得重新排在隊伍后面去取票。

相關(guān)文章

  • IDEA中Maven依賴下載失敗的完美解決方案

    IDEA中Maven依賴下載失敗的完美解決方案

    使用IDEA進行Maven項目開發(fā)時,時不時會遇到pom.xml報錯的情況,其中很大概率是因為Maven依賴的jar包下載失敗,找來找去也沒有找到是什么問題,困擾了很多程序猿,這里給出IDEA中Maven依賴下載失敗解決方案,給大家參考,實測有用
    2020-04-04
  • Spring中的JdbcTemplate詳細解析

    Spring中的JdbcTemplate詳細解析

    這篇文章主要介紹了Spring中的JdbcTemplate詳細解析,JdbcTemplate是Spring框架中提供的一個對象,是對原始繁瑣的Jdbc API對象的簡單封裝,Spring框架為我們提供了很多的操作模板類,需要的朋友可以參考下
    2024-01-01
  • JavaFX實現(xiàn)UI美觀效果代碼實例

    JavaFX實現(xiàn)UI美觀效果代碼實例

    這篇文章主要介紹了JavaFX實現(xiàn)UI美觀效果代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • Struts2學(xué)習(xí)教程之?dāng)r截器機制與自定義攔截器

    Struts2學(xué)習(xí)教程之?dāng)r截器機制與自定義攔截器

    這篇文章主要給大家介紹了關(guān)于Struts2學(xué)習(xí)基礎(chǔ)教程之?dāng)r截器機制與自定義攔截器的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • 解決bufferedReader.readLine()讀到最后發(fā)生阻塞的問題

    解決bufferedReader.readLine()讀到最后發(fā)生阻塞的問題

    這篇文章主要介紹了解決bufferedReader.readLine()讀到最后發(fā)生阻塞的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java實現(xiàn)通過時間獲取8位驗證碼

    Java實現(xiàn)通過時間獲取8位驗證碼

    這篇文章主要為大家詳細介紹了Java如何通過時間獲取8位驗證碼(每兩個小時生成一個),文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • maven中resource配置使用詳解

    maven中resource配置使用詳解

    這篇文章主要介紹了maven中resource配置使用,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • 在Java項目中實現(xiàn)日志輸出的技巧分享

    在Java項目中實現(xiàn)日志輸出的技巧分享

    日志是開發(fā)過程中不可或缺的一部分,它可以幫助我們追蹤代碼的執(zhí)行過程、排查問題以及監(jiān)控系統(tǒng)運行狀況,然而,大多數(shù)開發(fā)人員在編寫日志時往往只關(guān)注于輸出必要的信息,而忽略了日志的可讀性和美觀性,本文將介紹如何在Java項目中實現(xiàn)漂亮的日志輸出
    2023-10-10
  • 圖書管理系統(tǒng)java版

    圖書管理系統(tǒng)java版

    這篇文章主要為大家詳細介紹了java版的圖書管理系統(tǒng),通過實例為大家快速掌握數(shù)據(jù)庫編程技術(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 實例分析java對象中淺克隆和深克隆

    實例分析java對象中淺克隆和深克隆

    在本篇文章中我們給大家分享了關(guān)于java對象中淺克隆和深克隆的相關(guān)知識點和相關(guān)代碼內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2018-10-10

最新評論

兴隆县| 麦盖提县| 枣强县| 商水县| 商南县| 通道| 武乡县| 沙湾县| 沧源| 惠州市| 班玛县| 岫岩| 英山县| 朝阳县| 宁国市| 沛县| 白水县| 天柱县| 东海县| 正镶白旗| 禄丰县| 且末县| 百色市| 繁峙县| 安多县| 泰安市| 江安县| 会昌县| 拉孜县| 开封县| 余庆县| 故城县| 天柱县| 芒康县| 辽阳市| 金华市| 内乡县| 天祝| 彩票| 阜南县| 长岭县|