国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JUC并發(fā)編程學(xué)習(xí)筆記(二)Lock鎖(重點(diǎn))

這篇具有很好參考價(jià)值的文章主要介紹了JUC并發(fā)編程學(xué)習(xí)筆記(二)Lock鎖(重點(diǎn))。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Lock鎖(重點(diǎn))

傳統(tǒng)的synchronized

傳統(tǒng)的解決多線程并發(fā)導(dǎo)致的一些問(wèn)題我們會(huì)使用synchronized關(guān)鍵字來(lái)解決,synchronized的本質(zhì)就是隊(duì)列、鎖。

JUC并發(fā)編程學(xué)習(xí)筆記(二)Lock鎖(重點(diǎn))

Lock的實(shí)現(xiàn)類有:可重復(fù)鎖(最常用)、讀鎖、寫鎖

JUC并發(fā)編程學(xué)習(xí)筆記(二)Lock鎖(重點(diǎn))

在創(chuàng)建可重復(fù)鎖時(shí),可傳入boolean類型值來(lái)決定該鎖是公平鎖(先來(lái)后到)還是非公平鎖(可插隊(duì))。

JUC并發(fā)編程學(xué)習(xí)筆記(二)Lock鎖(重點(diǎn))

三部曲

1、創(chuàng)建一個(gè)鎖

Lock lock = new ReentrantLock(true);

2、加鎖

lock.lock();

3、將業(yè)務(wù)代碼塊包裹在try{}cath(){}finally{lock.unlock();}中

try {
            if (number>0){
                System.out.println(Thread.currentThread().getName()+":賣出了第"+ number-- +"張票;"+"剩余"+number+"張票");
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            lock.unlock();
        }

完整給一個(gè)業(yè)務(wù)加鎖

class Ticket2{
    private int number = 50;
    Lock lock = new ReentrantLock(true);

    public void sale(){
        lock.lock();
        try {
            if (number>0){
                System.out.println(Thread.currentThread().getName()+":賣出了第"+ number-- +"張票;"+"剩余"+number+"張票");
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            lock.unlock();
        }
    }
}

公平鎖結(jié)果

JUC并發(fā)編程學(xué)習(xí)筆記(二)Lock鎖(重點(diǎn))

非公平鎖結(jié)果

JUC并發(fā)編程學(xué)習(xí)筆記(二)Lock鎖(重點(diǎn))

從結(jié)果上看,非公平鎖和synchronized關(guān)鍵字效果一樣。

  • 小知識(shí):for循環(huán)中的業(yè)務(wù)邏輯只有一條的時(shí)候可以簡(jiǎn)化大括號(hào),直接將業(yè)務(wù)邏輯卸載后面通過(guò)分號(hào)結(jié)束。

synchronized和Lock鎖的區(qū)別文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-739654.html

  1. synchronized是關(guān)鍵字,Lock鎖是java的一個(gè)類
  2. synchronized無(wú)法判斷鎖的狀態(tài),Lock鎖可以判斷是否獲取到了鎖
  3. synchronized是自動(dòng)的,執(zhí)行完之后會(huì)自動(dòng)釋放鎖;Lock鎖必須要手動(dòng)釋放鎖!如果不釋放鎖,會(huì)導(dǎo)致死鎖
  4. synchronized 線程1(獲得鎖,阻塞)、線程2(等待,傻等死等);Lock鎖在其他線程獲得鎖阻塞后不一定會(huì)一直等待下去??梢酝ㄟ^(guò)tryLock來(lái)嘗試獲得鎖。
  5. synchronized 可重入鎖,不可以中斷,非公平鎖;Lock 可重入鎖,可以判斷鎖、可以自己設(shè)置是否公平
  6. synchronized 適合鎖少量的代碼同步問(wèn)題;Lock 適合鎖大量的代碼同步

到了這里,關(guān)于JUC并發(fā)編程學(xué)習(xí)筆記(二)Lock鎖(重點(diǎn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JUC并發(fā)編程學(xué)習(xí)筆記(十五)JMM

    JUC并發(fā)編程學(xué)習(xí)筆記(十五)JMM

    請(qǐng)你談?wù)剬?duì)Volatile的理解 Volatile是java虛擬機(jī)提供的 輕量級(jí)的同步機(jī)制 1、保證可見(jiàn)性 2、不保證原子性 3、禁止指令重排 什么是JMM JVM-java虛擬機(jī) JMM-java內(nèi)存模型,不存在的東西,概念!約定 關(guān)于JMM的一些同步的約定: 線程解鎖前,必須把共享變量 立刻 刷回主存 線程加鎖前,

    2024年02月05日
    瀏覽(25)
  • JUC并發(fā)編程學(xué)習(xí)筆記(九)阻塞隊(duì)列

    JUC并發(fā)編程學(xué)習(xí)筆記(九)阻塞隊(duì)列

    阻塞 隊(duì)列 隊(duì)列的特性:FIFO(fist inpupt fist output)先進(jìn)先出 不得不阻塞的情況 什么情況下會(huì)使用阻塞隊(duì)列:多線程并發(fā)處理、線程池 學(xué)會(huì)使用隊(duì)列 添加、移除 四組API 方式 拋出異常 不拋出異常,有返回值 阻塞等待 超時(shí)等待 添加 add offer put offer(E e, long timeout, TimeUnit unit) 移

    2024年02月06日
    瀏覽(25)
  • JUC并發(fā)編程學(xué)習(xí)筆記(十九)原子引用

    帶版本號(hào)的原子操作! 解決ABA問(wèn)題,引入原子引用(樂(lè)觀鎖思想) AtomicStampedReference類解決ABA問(wèn)題 所有相同類型的包裝類對(duì)象之間值的比較全部使用equals方法比較 Integer使用了對(duì)象緩存機(jī)制,默認(rèn)范圍是-128至127,推薦使用靜態(tài)工廠方法valueOf獲取對(duì)象實(shí)例,而不是new,因?yàn)関

    2024年02月05日
    瀏覽(22)
  • JUC并發(fā)編程學(xué)習(xí)筆記(六)Callable(簡(jiǎn)單)

    JUC并發(fā)編程學(xué)習(xí)筆記(六)Callable(簡(jiǎn)單)

    callable接口和runnable接口類似,都是為了執(zhí)行另外一條線程而設(shè)計(jì)的,區(qū)別是Runnable不會(huì)返回結(jié)果也不會(huì)拋出異常。 1、可以有返回值 2、可以拋出異常 3、方法不同;run()/call(); Runnable 實(shí)現(xiàn)Runnable接口,重寫run方法,無(wú)返回值 Callable 實(shí)現(xiàn)Callable接口,重寫call方法,有返回值,可

    2024年02月06日
    瀏覽(24)
  • JUC并發(fā)編程學(xué)習(xí)筆記(四)8鎖現(xiàn)象

    八鎖-就是關(guān)于鎖的八個(gè)問(wèn)題 鎖是什么,如何判斷鎖的是誰(shuí) 對(duì)象、class模板 深刻理解鎖 鎖的東西無(wú)外乎就兩樣:1、同步方法的調(diào)用者,2、Class模板。 同一個(gè)鎖中,只有當(dāng)前線程資源釋放后才會(huì)被下一個(gè)線程所接手。 同步方法的調(diào)用者是兩個(gè)不同的實(shí)例時(shí),互不相關(guān)。 靜態(tài)

    2024年02月06日
    瀏覽(26)
  • JUC并發(fā)編程學(xué)習(xí)筆記(一)認(rèn)知進(jìn)程和線程

    進(jìn)程 一個(gè)程序,如QQ.exe,是程序的集合 一個(gè)進(jìn)程往往可以包含多個(gè)線程,至少包含一個(gè) java默認(rèn)有兩個(gè)線程,GC垃圾回收線程和Main線程 線程:一個(gè)進(jìn)程中的各個(gè)功能 java無(wú)法真正的開(kāi)啟線程,因?yàn)閖ava是運(yùn)行在虛擬機(jī)上的,所以只能通過(guò)C++,通過(guò)native本地方法調(diào)用C++開(kāi)啟線程

    2024年02月06日
    瀏覽(95)
  • JUC并發(fā)編程學(xué)習(xí)筆記(十八)深入理解CAS

    JUC并發(fā)編程學(xué)習(xí)筆記(十八)深入理解CAS

    什么是CAS 為什么要學(xué)CAS:大廠你必須深入研究底層!有所突破! java層面的cas-------compareAndSet compareAndSet(int expectedValue, int newValue) 期望并更新,達(dá)到期望值就更新、否則就不更新! Unsafe類 java不能直接操作內(nèi)存,但是可以調(diào)用c++,c++可以操作內(nèi)存,java可以通過(guò)native定義

    2024年02月05日
    瀏覽(27)
  • JUC并發(fā)編程學(xué)習(xí)筆記(七)常用的輔助類

    JUC并發(fā)編程學(xué)習(xí)筆記(七)常用的輔助類

    CountDownLatch 這是一個(gè)JUC計(jì)數(shù)器輔助類,計(jì)數(shù)器有加有減,這是減。 使用方法 使用前 可能會(huì)在所有人沒(méi)出去之前關(guān)門 使用后 不在乎誰(shuí)先出去,但是一定要總數(shù)等于0后才會(huì)關(guān)門 原理 countDownLatch.countDown();//總數(shù)減1 countDownLatch.await();//等待總數(shù)變?yōu)?才會(huì)往下執(zhí)行,相當(dāng)于阻塞當(dāng)

    2024年02月06日
    瀏覽(20)
  • JUC并發(fā)編程學(xué)習(xí)筆記(十二)Stream流式計(jì)算

    JUC并發(fā)編程學(xué)習(xí)筆記(十二)Stream流式計(jì)算

    什么是Stream流式計(jì)算 大數(shù)據(jù):存儲(chǔ)+計(jì)算 集合、MySql這些的本質(zhì)都是存儲(chǔ)東西的; 計(jì)算都應(yīng)該交給流來(lái)操作! 一個(gè)案例說(shuō)明:函數(shù)式接口、lambda表達(dá)式、鏈?zhǔn)骄幊?、Stream流式計(jì)算

    2024年02月05日
    瀏覽(27)
  • JUC并發(fā)編程-線程和進(jìn)程、Synchronized 和 Lock、生產(chǎn)者和消費(fèi)者問(wèn)題

    JUC并發(fā)編程-線程和進(jìn)程、Synchronized 和 Lock、生產(chǎn)者和消費(fèi)者問(wèn)題

    源碼 + 官方文檔 面試高頻問(wèn)! java.util 工具包、包、分類 業(yè)務(wù):普通的線程代碼 Thread Runnable Runnable 沒(méi)有返回值、效率相比入 Callable 相對(duì)較低! 線程、進(jìn)程,如果不能使用一句話說(shuō)出來(lái)的技術(shù),不扎實(shí)! 進(jìn)程:一個(gè)程序,QQ.exe Music.exe 程序的集合; 一個(gè)進(jìn)程往往可以包含多

    2024年01月20日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包