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

Java線程活鎖的實(shí)現(xiàn)與死鎖等的區(qū)別

 更新時間:2024年04月01日 11:45:25   作者:小張frog  
活鎖是一種遞歸情況,其中兩個或更多線程將繼續(xù)重復(fù)特定的代碼邏輯,本文主要介紹了Java線程活鎖的實(shí)現(xiàn)與死鎖等的區(qū)別,具有一定的參考價值,感興趣的可以了解一下

1、什么是活鎖

活鎖是指,線程沒有發(fā)生阻塞,但依然執(zhí)行不下去的情況。

2、活鎖的例子

如果兩個線程互相改變對方的結(jié)束條件,就可能導(dǎo)致雙方誰也無法結(jié)束。

比如這個程序:

public class TestLiveLock {
    static volatile int count = 10;
    static final Object lock = new Object();
    public static void main(String[] args) {
        new Thread(() -> {
            // 期望減到 0 退出循環(huán)
            while (count > 0) {
                sleep(0.2);
                count--;
                log.debug("count: {}", count);
            }
        }, "t1").start();
        
        new Thread(() -> {
            // 期望超過 20 退出循環(huán)
            while (count < 20) {
                sleep(0.2);
                count++;
                log.debug("count: {}", count);
            }
        }, "t2").start();
    }
}

相當(dāng)于一個抽水一個注水,水池永遠(yuǎn)不會空或者滿

用生活舉例看Java多線程活躍性問題【死鎖、饑餓、活鎖】

死鎖:吃飯問題,5個人每人只有一雙筷子,只有讓另外一個人分享他自己的筷子給自己,自己才能吃到飯。若存在這樣的情況,若每個人都不把自己的筷子借給別人用餐,每個人都抓著自己手中的筷子不放,那么每個人都吃不上飯餓死了。也就是說A線程擁有B線程所需的資源,B線程也有A線程所需資源,但兩者都不把資源分享出來,最后需求達(dá)不到,最后餓死。

饑餓問題:學(xué)校飯?zhí)门抨?duì)打飯,但有些人無秩序插隊(duì),那么插隊(duì)的人擁有了更高的優(yōu)先級,更可能打到飯吃,也可能他買上了飯也不離開,導(dǎo)致后面的人無法打飯。最后那些守規(guī)矩的人(優(yōu)先級很低的人),就被餓死了。

引起饑餓問題的一些因素:

  • 高優(yōu)先級吞噬所有低優(yōu)先級的CPU時間片
  • 線程被永久堵塞在一個等待進(jìn)入同步塊的狀態(tài)
  • 等待的線程永遠(yuǎn)不被喚醒來

如果盡量避免饑餓問題:

設(shè)置合理的優(yōu)先級,使用鎖來代替synchronized

活鎖:到達(dá)終點(diǎn)有兩條路(記作1號路和2號路),有一對冤家A和B兩人同時走了1號路,在途中相遇,他們倆看見了對方,于是都轉(zhuǎn)身離開,A走了2號路,B也走了2號路,在行走的過程中,兩人又再見碰面,于是又轉(zhuǎn)身離開。后來A、B兩人又同時走了1號路又再次碰面,就這樣反反復(fù)復(fù)...這就是活鎖問題

到此這篇關(guān)于Java線程活鎖的實(shí)現(xiàn)與死鎖等的區(qū)別的文章就介紹到這了,更多相關(guān)Java線程活鎖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java設(shè)計(jì)模式之模板模式(Template模式)介紹

    Java設(shè)計(jì)模式之模板模式(Template模式)介紹

    這篇文章主要介紹了Java設(shè)計(jì)模式之模板模式(Template模式)介紹,定義一個操作中算法的骨架,將一些步驟的執(zhí)行延遲到其子類中,需要的朋友可以參考下
    2015-03-03
  • java整合onlyoffice的各種踩坑記錄

    java整合onlyoffice的各種踩坑記錄

    這篇文章主要給大家介紹了關(guān)于java整合onlyoffice的各種踩坑,OnlyOffice是一種強(qiáng)大的在線協(xié)作軟件,專為企業(yè)和個人設(shè)計(jì),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • RabbitMQ消息的延遲隊(duì)列詳解

    RabbitMQ消息的延遲隊(duì)列詳解

    這篇文章主要介紹了RabbitMQ消息的延遲隊(duì)列,延遲隊(duì)列也就是死信交換機(jī),有些隊(duì)列的消息成為死信后,消息中間件可以將其從當(dāng)前隊(duì)列發(fā)送到另一個隊(duì)列中,這個隊(duì)列就是死信隊(duì)列,感興趣的同學(xué)可以參考下文
    2024-02-02
  • Java使用wait/notify實(shí)現(xiàn)線程間通信上篇

    Java使用wait/notify實(shí)現(xiàn)線程間通信上篇

    wait()和notify()是直接隸屬于Object類,也就是說所有對象都擁有這一對方法,下面這篇文章主要給大家介紹了關(guān)于使用wait/notify實(shí)現(xiàn)線程間通信的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • Java?SpringBoot整合shiro-spring-boot-starterqi項(xiàng)目報(bào)錯解決

    Java?SpringBoot整合shiro-spring-boot-starterqi項(xiàng)目報(bào)錯解決

    這篇文章主要介紹了Java?SpringBoot整合shiro-spring-boot-starterqi項(xiàng)目報(bào)錯解決,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考一下
    2022-08-08
  • Zookeeper原理及在Dubbo中的使用示例詳解

    Zookeeper原理及在Dubbo中的使用示例詳解

    這篇文章主要為大家介紹了Zookeeper原理及在Dubbo中的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Open-Feign整合hystrix降級熔斷實(shí)戰(zhàn)記錄

    Open-Feign整合hystrix降級熔斷實(shí)戰(zhàn)記錄

    這篇文章主要介紹了Open-Feign整合hystrix降級熔斷實(shí)戰(zhàn)記錄,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Java集合源碼ArrayList的可視化操作過程示例詳解

    Java集合源碼ArrayList的可視化操作過程示例詳解

    這篇文章主要介紹了Java集合源碼ArrayList的可視化操作過程示例詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2025-06-06
  • Java中@JSONField注解的使用詳解

    Java中@JSONField注解的使用詳解

    這篇文章主要介紹了Java中@JSONField注解的使用,@JSONField是阿里巴巴開源的JSON處理庫FastJSON提供的一個注解,用于在Java對象和JSON數(shù)據(jù)之間進(jìn)行序列化和反序列化時,對字段的行為進(jìn)行更精細(xì)的控制,需要的朋友可以參考下
    2025-05-05
  • Java super關(guān)鍵字的使用方法詳解

    Java super關(guān)鍵字的使用方法詳解

    這篇文章主要介紹了Java super關(guān)鍵字的使用方法詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家對super關(guān)鍵字徹底掌握,需要的朋友可以參考下
    2017-10-10

最新評論

鄯善县| 龙南县| 商河县| 乳山市| 花垣县| 东台市| 和林格尔县| 邻水| 密云县| 西贡区| 塔河县| 贺兰县| 揭东县| 噶尔县| 长乐市| 江北区| 宁津县| 合江县| 贵州省| 宜城市| 镇赉县| 克山县| 平顺县| 深泽县| 融水| 西藏| 武定县| 蓬安县| 建昌县| 库尔勒市| 渭源县| 兴义市| 民县| 华安县| 梓潼县| 金寨县| 乐都县| 乌审旗| 清新县| 准格尔旗| 临桂县|