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

Java中l(wèi)ock和tryLock及l(fā)ockInterruptibly的區(qū)別

 更新時間:2022年05月08日 14:12:47   作者:??Java中文社群????  
這篇文章主要介紹了Java中l(wèi)ock和tryLock及l(fā)ockInterruptibly的區(qū)別,文章介紹詳細,具有一定的參考價值,需要的小伙伴可以參考一下

在 Lock 接口中,獲取鎖的方法有 4 個:lock()、tryLock()、tryLock(long,TimeUnit)、lockInterruptibly(),為什么需要這么多方法?這些方法都有什么區(qū)別?接下來我們一起來看。 

1.lock 方法

lock 方法是 Lock 接口中最基礎的獲取鎖的方法,當有可用鎖時會直接得到鎖并立即返回,當沒有可用鎖時會一直等待,直到獲取到鎖為止,它的基礎用法如下:

Lock?lock?=?new ReentrantLock();
// 獲取鎖
lock.lock();
try {
????// 執(zhí)行業(yè)務代碼...
} finally {
    //釋放鎖
????lock.unlock();
}

2.lockInterruptibly 方法

lockInterruptibly 方法和 lock 方法類似,**當有可用鎖時會直接得到鎖并立即返回,如果沒有可用鎖會一直等待直到獲取鎖,但和 lock 方法不同,lockInterruptibly 方法在等待獲取時,如果遇到線程中斷會放棄獲取鎖。**它的基礎用法如下:

Lock lock = new ReentrantLock();
try {
    // 獲取鎖
    lock.lockInterruptibly();
    try {
        // 執(zhí)行業(yè)務方法...
    } finally {
        // 釋放鎖
        lock.unlock();
    }
} catch (InterruptedException e) {
    e.printStackTrace();
}

PS:使用 thread.interrupt() 方法可以中斷線程執(zhí)行。

3.tryLock 方法

與前面的兩個方法不同,使用無參的 tryLock 方法會嘗試獲取鎖,并立即返回獲取鎖的結果(true 或 false),如果有可用鎖返回 true,并得到此鎖,如果沒有可用鎖會立即返回 false。它的基礎用法如下:

Lock lock = new ReentrantLock();
// 獲取鎖
boolean result = lock.tryLock();
if (result) {
    try {
        // 獲取鎖成功,執(zhí)行業(yè)務代碼...
    } finally {
        // 釋放鎖
        lock.unlock();
    }
} else {
    // 執(zhí)行獲取鎖失敗的業(yè)務代碼...
}

4.tryLock(long,TimeUnit) 方法

**有參數(shù)的 tryLock(long,TimeUnit) 方法需要設置兩個參數(shù),第一個參數(shù)是 long 類型的超時時間,第二個參數(shù)是對參數(shù)一的時間類型描述(比如第一參數(shù)是 3,那么它究竟是 3 秒還是 3 分鐘,是第二個參數(shù)說了算的)。在這段時間內如果獲取到可用的鎖了就返回 true,如果在定義的時間內,沒有得到鎖就會返回 false。**它的基礎用法如下:

Lock lock = new ReentrantLock();
try {
    // 獲取鎖(最多等待 3s,如果獲取不到鎖就返回 false)
    boolean result = lock.tryLock(3, TimeUnit.SECONDS);
    if (result) {
        try {
            // 獲取鎖成功,執(zhí)行業(yè)務代碼...
        } finally {
            // 釋放鎖
            lock.unlock();
        }
    } else {
        // 執(zhí)行獲取鎖失敗的業(yè)務代碼...
    }
} catch (InterruptedException e) {
    e.printStackTrace();
}

5.總結

lock()、tryLock()、tryLock(long,TimeUnit)、lockInterruptibly() 都是用來獲取鎖的,其中 lock 方法如果獲取不到鎖會一直阻塞等待;而 lockInterruptibly 方法雖然也會阻塞等待獲取鎖,但它卻能中途響應線程的中斷;無參的 tryLock 方法會立馬返回一個獲取鎖成功與失敗的結果,有參數(shù)的 tryLock(long,TimeUnit) 方法會在設定的時間內返回一個獲取鎖成功與失敗的結果。這 4 個方法的特性各不相同,需要根據(jù)實際的業(yè)務情況選擇合適獲取鎖的方法。

到此這篇關于Java中l(wèi)ock和tryLock及l(fā)ockInterruptibly的區(qū)別的文章就介紹到這了,更多相關Java lock內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java?Object轉Integer實現(xiàn)方式

    java?Object轉Integer實現(xiàn)方式

    這篇文章主要介紹了java?Object轉Integer實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Spring中@order注解用法實戰(zhàn)教程

    Spring中@order注解用法實戰(zhàn)教程

    @Order注解主要用來控制配置類的加載順序,數(shù)字越小,越先加載,下面這篇文章主要給大家介紹了關于Spring中@order注解用法的相關資料,需要的朋友可以參考下
    2022-11-11
  • 使用springboot 打包插件去除jar包瘦身

    使用springboot 打包插件去除jar包瘦身

    這篇文章主要介紹了使用springboot 打包插件去除jar包瘦身的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 如何解決@Valid對象嵌套List對象校驗無效問題

    如何解決@Valid對象嵌套List對象校驗無效問題

    這篇文章主要介紹了如何解決@Valid對象嵌套List對象校驗無效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java?API文檔的使用方法詳解

    Java?API文檔的使用方法詳解

    在開發(fā)過程中如果遇到疑難問題,除了可以在網(wǎng)絡中尋找答案,也可以在Java API幫助文檔(簡稱"JDK文檔"”)中查找答案,下面這篇文章主要給大家介紹了關于Java?API文檔使用的相關資料,需要的朋友可以參考下
    2023-02-02
  • Java 正則表達式詳細介紹

    Java 正則表達式詳細介紹

    本文主要介紹 Java 正則表達式的內容,這里整理了Java 正則表達式的相關資料,并詳細介紹,附有代碼示例,有興趣的小伙伴可以參考下
    2016-09-09
  • Spring Boot和Vue跨域請求問題原理解析

    Spring Boot和Vue跨域請求問題原理解析

    這篇文章主要介紹了Spring Boot和Vue跨域請求問題原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • java從文件中讀取數(shù)據(jù)的六種方法

    java從文件中讀取數(shù)據(jù)的六種方法

    本文主要介紹了java從文件中讀取數(shù)據(jù)的方法,詳細的介紹了六種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Java創(chuàng)建型設計模式之建造者模式詳解

    Java創(chuàng)建型設計模式之建造者模式詳解

    建造者模式是Java中一種創(chuàng)建型設計模式,它的主要目的是將一個復雜對象的構建過程分解為多個簡單對象的構建過程,本文將詳細介紹Java中的建造者模式,包括它的定義、結構、實現(xiàn)方法以及應用場景等方面,希望對大家有所幫助
    2023-05-05
  • springboot swagger 接口文檔分組展示功能實現(xiàn)

    springboot swagger 接口文檔分組展示功能實現(xiàn)

    這篇文章主要介紹了springboot swagger 接口文檔分組展示功能實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-03-03

最新評論