欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java線程阻塞的方法區(qū)別詳解

 更新時(shí)間:2023年10月26日 09:37:07   作者:buzhbuzh  
這篇文章主要介紹了Java線程阻塞的方法區(qū)別詳解,線程阻塞是指當(dāng)一個(gè)線程無法繼續(xù)執(zhí)行時(shí),它會(huì)進(jìn)入阻塞狀態(tài),直到某個(gè)條件滿足后才能繼續(xù)執(zhí)行,線程阻塞可以通過多種方式實(shí)現(xiàn),如等待鎖、等待IO操作、等待其他線程的完成等,需要的朋友可以參考下

Thread.sleep()和Object.wait()的區(qū)別

(1)Thread.sleep()不會(huì)釋放占有的鎖,Object.wait()會(huì)釋放占有的鎖;

(2)Thread.sleep()必須傳入時(shí)間,Object.wait()可傳可不傳,不傳表示一直阻塞下去;

(3)Thread.sleep()到時(shí)間了會(huì)自動(dòng)喚醒,然后繼續(xù)執(zhí)行;

(4)Object.wait()不帶時(shí)間的,需要另一個(gè)線程使用Object.notify()喚醒;

(5)Object.wait()帶時(shí)間的,假如沒有被notify,到時(shí)間了會(huì)自動(dòng)喚醒,這時(shí)又分好兩種情況,一是立即獲取到了鎖,線程自然會(huì)繼續(xù)執(zhí)行;二是沒有立即獲取鎖,線程進(jìn)入同步隊(duì)列等待獲取鎖;

其實(shí),他們倆最大的區(qū)別就是Thread.sleep()不會(huì)釋放鎖資源,Object.wait()會(huì)釋放鎖資源。

Thread.sleep()和Condition.await()的區(qū)別 這個(gè)題目的回答思路跟Object.wait()是基本一致的,不同的是Condition.await()底層是調(diào)用LockSupport.park()來實(shí)現(xiàn)阻塞當(dāng)前線程的。

Thread.sleep()和LockSupport.park()的區(qū)別

(1)從功能上來說,Thread.sleep()和LockSupport.park()方法類似,都是阻塞當(dāng)前線程的執(zhí)行,且都不會(huì)釋放當(dāng)前線程占有的鎖資源;

(2)Thread.sleep()沒法從外部喚醒,只能自己醒過來;

(3)LockSupport.park()方法可以被另一個(gè)線程調(diào)用LockSupport.unpark()方法喚醒;

(4)Thread.sleep()方法聲明上拋出了InterruptedException中斷異常,所以調(diào)用者需要捕獲這個(gè)異常或者再拋出;

(5)LockSupport.park()方法不需要捕獲中斷異常;

(6)Thread.sleep()本身就是一個(gè)native方法;

(7)LockSupport.park()底層是調(diào)用的Unsafe的native方法;

Object.wait()和LockSupport.park()的區(qū)別

(1)Object.wait()方法需要在synchronized塊中執(zhí)行;

(2)LockSupport.park()可以在任意地方執(zhí)行;

(3)Object.wait()方法聲明拋出了中斷異常,調(diào)用者需要捕獲或者再拋出;

(4)LockSupport.park()不需要捕獲中斷異?!颈疚挠晒珡奶?hào)“彤哥讀源碼”原創(chuàng)】;

(5)Object.wait()不帶超時(shí)的,需要另一個(gè)線程執(zhí)行notify()來喚醒,但不一定繼續(xù)執(zhí)行后續(xù)內(nèi)容;

(6)LockSupport.park()不帶超時(shí)的,需要另一個(gè)線程執(zhí)行unpark()來喚醒,一定會(huì)繼續(xù)執(zhí)行后續(xù)內(nèi)容;

(7)如果在wait()之前執(zhí)行了notify()會(huì)怎樣?拋出IllegalMonitorStateException異常;

(8)如果在park()之前執(zhí)行了unpark()會(huì)怎樣?線程不會(huì)被阻塞,直接跳過park(),繼續(xù)執(zhí)行后續(xù)內(nèi)容;

LockSupport.park()會(huì)釋放鎖資源嗎? 不會(huì),它只負(fù)責(zé)阻塞當(dāng)前線程,釋放鎖資源實(shí)際上是在Condition的await()方法中實(shí)現(xiàn)的。

在這里插入圖片描述

到此這篇關(guān)于Java線程阻塞的方法區(qū)別詳解的文章就介紹到這了,更多相關(guān)Java線程阻塞的方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring中@Lazy注解的使用技巧與實(shí)例解析

    Spring中@Lazy注解的使用技巧與實(shí)例解析

    @Lazy注解在Spring框架中用于延遲Bean的初始化,優(yōu)化應(yīng)用啟動(dòng)性能,它不僅適用于@Bean和@Component,還可以用于注入點(diǎn),通過將Bean的初始化延遲到第一次使用時(shí),可以減少不必要的資源消耗,本文介紹Spring中@Lazy注解的使用技巧與實(shí)例解析,感興趣的朋友一起看看吧
    2025-03-03
  • Redisson分布式鎖的源碼解讀分享

    Redisson分布式鎖的源碼解讀分享

    Redisson是一個(gè)在Redis的基礎(chǔ)上實(shí)現(xiàn)的Java駐內(nèi)存數(shù)據(jù)網(wǎng)格(In-Memory?Data?Grid)。Redisson有一樣功能是可重入的分布式鎖。本文來討論一下這個(gè)功能的特點(diǎn)以及源碼分析
    2022-11-11
  • Java實(shí)現(xiàn)一個(gè)簡單的線程池代碼示例

    Java實(shí)現(xiàn)一個(gè)簡單的線程池代碼示例

    線程池是管理線程的一個(gè)池子,通過阻塞隊(duì)列管理任務(wù),主要參數(shù)包括corePoolSize、maximumPoolSize、keepAliveTime等,這篇文章主要介紹了Java實(shí)現(xiàn)一個(gè)簡單的線程池的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • springboot項(xiàng)目實(shí)現(xiàn)定時(shí)備份數(shù)據(jù)庫導(dǎo)出sql文件方式

    springboot項(xiàng)目實(shí)現(xiàn)定時(shí)備份數(shù)據(jù)庫導(dǎo)出sql文件方式

    這篇文章主要介紹了springboot項(xiàng)目實(shí)現(xiàn)定時(shí)備份數(shù)據(jù)庫導(dǎo)出sql文件方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Spring項(xiàng)目接入DeepSeek的兩種超簡單的方式分享

    Spring項(xiàng)目接入DeepSeek的兩種超簡單的方式分享

    DeepSeek?作為一款卓越的國產(chǎn)?AI?模型,越來越多的公司考慮在自己的應(yīng)用中集成,本文為大家?分享了Spring項(xiàng)目接入DeepSeek的兩種超簡單的方式,希望對大家有所幫助
    2025-02-02
  • SpringCloud手寫Ribbon實(shí)現(xiàn)負(fù)載均衡

    SpringCloud手寫Ribbon實(shí)現(xiàn)負(fù)載均衡

    這篇文章主要介紹了SpringCloud手寫Ribbon實(shí)現(xiàn)負(fù)載均衡的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Java String類簡單用法實(shí)戰(zhàn)示例【字符串輸出、比較】

    Java String類簡單用法實(shí)戰(zhàn)示例【字符串輸出、比較】

    這篇文章主要介紹了Java String類簡單用法,結(jié)合具體實(shí)例形式分析了Java使用String類實(shí)現(xiàn)字符串的輸出和比較功能相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • 常用Eclipse快捷方式(推薦)

    常用Eclipse快捷方式(推薦)

    下面小編就為大家?guī)硪黄S肊clipse快捷方式(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • 解決Eclipse的Servers視圖中無法添加Tomcat6/Tomcat7的方法

    解決Eclipse的Servers視圖中無法添加Tomcat6/Tomcat7的方法

    這篇文章主要介紹了解決Eclipse的Servers視圖中無法添加Tomcat6/Tomcat7的方法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Java構(gòu)造代碼塊,靜態(tài)代碼塊原理與用法實(shí)例分析

    Java構(gòu)造代碼塊,靜態(tài)代碼塊原理與用法實(shí)例分析

    這篇文章主要介紹了Java構(gòu)造代碼塊,靜態(tài)代碼塊,結(jié)合實(shí)例形式分析了Java構(gòu)造代碼塊,靜態(tài)代碼塊的功能、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04

最新評論