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

SpringBoot中的ExpiringMap代碼實(shí)例

 更新時(shí)間:2023年08月28日 09:25:03   作者:yzm4399  
這篇文章主要介紹了SpringBoot中的ExpiringMap代碼實(shí)例,ExpiringMap是一個(gè)可以設(shè)置過(guò)期策略、可變條目過(guò)期、延遲條目加載和過(guò)期偵聽(tīng)器的線程安全存儲(chǔ)容器,需要的朋友可以參考下

1、簡(jiǎn)介

ExpiringMap是一個(gè)可以設(shè)置過(guò)期策略、可變條目過(guò)期、延遲條目加載和過(guò)期偵聽(tīng)器的線程安全存儲(chǔ)容器。

2、引入依賴

<dependency>
    <groupId>net.jodah</groupId>
    <artifactId>expiringmap</artifactId>
    <version>0.5.8</version>
</dependency>

3、過(guò)期時(shí)間

    private static void demo01() throws InterruptedException {
        ExpiringMap<String, Object> map = ExpiringMap.builder()
                // 過(guò)期時(shí)間:5000,單位毫秒
                .expiration(5000, TimeUnit.MILLISECONDS)
                .build();
        log.info("添加元素");
        map.put("name", "yzm");
        while (map.containsKey("name")) {
            log.info("name = " + map.get("name"));
            Thread.sleep(1000);
        }
        log.info("超過(guò)過(guò)期時(shí)間,自動(dòng)刪除");
    }

在這里插入圖片描述

4、重置過(guò)期時(shí)間

    private static void demo01_2() throws InterruptedException {
        ExpiringMap<String, Object> map = ExpiringMap.builder()
                // 允許映射條目具有單獨(dú)的到期日,并允許更改到期日
                //.variableExpiration()
                // 過(guò)期時(shí)間:5000,單位毫秒
                .expiration(5000, TimeUnit.MILLISECONDS)
                .build();
        log.info("添加元素");
        map.put("name", "yzm");
        int count = 0;
        while (map.containsKey("name")) {
            count++;
            log.info("name = " + map.get("name"));
            Thread.sleep(1000);
            if (count == 4) {
            	//指定key重置過(guò)期時(shí)間
                map.setExpiration("name", 5000, TimeUnit.MILLISECONDS);
            }
        }
        log.info("超過(guò)過(guò)期時(shí)間,自動(dòng)刪除");
    }

未啟用variableExpiration

在這里插入圖片描述

啟用variableExpiration

在這里插入圖片描述

5、過(guò)期策略

ExpirationPolicy.ACCESSED:訪問(wèn)或更新元素時(shí),重置過(guò)期時(shí)間(即過(guò)期時(shí)間重新從零計(jì)算)

ExpirationPolicy.CREATED:創(chuàng)建或更新元素時(shí),重置過(guò)期時(shí)間。默認(rèn)策略。

    private static void demo02() throws InterruptedException {
        ExpiringMap<String, Object> map = ExpiringMap.builder()
                .variableExpiration()
                .expiration(5000, TimeUnit.MILLISECONDS)
                .expirationPolicy(ExpirationPolicy.ACCESSED)
                .build();
        log.info("添加元素");
        map.put("name", "yzm");
        int count = 0;
        while (map.containsKey("name")) {
            count++;
            log.info("name = " + map.get("name"));
            Thread.sleep(1000);
            if (count > 10) {
                break;
            }
        }
        log.info("count:" + count);
    }

在這里插入圖片描述

    private static void demo02() throws InterruptedException {
        ExpiringMap<String, Object> map = ExpiringMap.builder()
                .variableExpiration()
                .expiration(5000, TimeUnit.MILLISECONDS)
                .expirationPolicy(ExpirationPolicy.ACCESSED)
                .build();
        log.info("添加元素");
        map.put("name", "yzm");
        int count = 0;
        while (map.containsKey("name")) {
            count++;
            //log.info("name = " + map.get("name"));
            Thread.sleep(1000);
            if (count == 4) {
                map.replace("name", "Yzm");
            }
        }
        log.info("count:" + count);
    }

在這里插入圖片描述

經(jīng)測(cè)試,

  • ACCESSED過(guò)期策略:調(diào)用get、put、replace等方法時(shí),都會(huì)重置過(guò)期時(shí)間;
  • CREATED過(guò)期策略:調(diào)用put、replace等方法時(shí),會(huì)重置過(guò)期時(shí)間,get不會(huì)。

6、容器最大值

超過(guò)最大值,最早的元素被移除

    private static void demo03() throws InterruptedException {
        ExpiringMap<Integer, Object> map = ExpiringMap.builder()
                .maxSize(5)
                .build();
        for (int i = 1; i <= 10; i++) {
            map.put(i, i);
            System.out.println(map.keySet());
            Thread.sleep(1000);
        }
    }

在這里插入圖片描述

7、過(guò)期偵聽(tīng)器

    private static void demo04() throws InterruptedException {
        ExpiringMap<String, Object> map = ExpiringMap.builder()
                .expiration(3000, TimeUnit.MILLISECONDS)
                // 同步通知
                .expirationListener(((key, value) -> log.info("觸發(fā)過(guò)期偵聽(tīng)器:" + key + " = " + value)))
                // 異步通知
                .asyncExpirationListener(((key, value) -> log.info("觸發(fā)過(guò)期偵聽(tīng)器:" + key + " = " + value)))
                .build();
        log.info("添加元素");
        map.put("name", "yzm");
        map.put("name2", "yzm2");
        map.put("name3", "yzm3");
        Thread.sleep(10000);
    }

在這里插入圖片描述

8、單個(gè)元素配置

    private static void demo05() throws InterruptedException {
        ExpiringMap<String, Object> map = ExpiringMap.builder().variableExpiration().build();
        map.put("key", "value", ExpirationPolicy.CREATED, 3, TimeUnit.SECONDS);
        while (map.containsKey("key")) {
            log.info("key = " + map.get("key"));
            Thread.sleep(1000);
        }
    }

到此這篇關(guān)于SpringBoot中的ExpiringMap代碼實(shí)例的文章就介紹到這了,更多相關(guān)SpringBoot的ExpiringMap內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文掌握maven??filtering標(biāo)簽

    一文掌握maven??filtering標(biāo)簽

    這篇文章主要介紹了maven??filtering標(biāo)簽,本文通過(guò)三種方法給大家講解maven?filtering標(biāo)簽,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • hadoop分布式環(huán)境搭建過(guò)程

    hadoop分布式環(huán)境搭建過(guò)程

    這篇文章主要介紹了hadoop分布式環(huán)境搭建過(guò)程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 利用Java代碼寫一個(gè)并行調(diào)用模板

    利用Java代碼寫一個(gè)并行調(diào)用模板

    這篇文章主要介紹了利用Java代碼寫一個(gè)并行調(diào)用模板,文章基于Java的相關(guān)內(nèi)容展開(kāi)寫一個(gè)并行調(diào)用模板的詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • 詳解Java中兩種分頁(yè)遍歷的使用姿勢(shì)

    詳解Java中兩種分頁(yè)遍歷的使用姿勢(shì)

    這篇文章主要介紹了詳解Java中兩種分頁(yè)遍歷的使用姿勢(shì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Windows下Java調(diào)用OCR進(jìn)行圖片識(shí)別

    Windows下Java調(diào)用OCR進(jìn)行圖片識(shí)別

    這篇文章主要為大家詳細(xì)介紹了Windows下Java調(diào)用OCR進(jìn)行圖片識(shí)別,通過(guò)Tesseract-OCR對(duì)圖片進(jìn)行識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • MyBatis-Flex多表關(guān)聯(lián)查詢指南分享

    MyBatis-Flex多表關(guān)聯(lián)查詢指南分享

    本文介紹了MyBatis-Flex的多表關(guān)聯(lián)查詢功能,包括基于QueryWrapper的動(dòng)態(tài)關(guān)聯(lián)查詢和基于@Relation注解的靜態(tài)關(guān)聯(lián)查詢,通過(guò)示例展示了如何實(shí)現(xiàn)不同類型的關(guān)聯(lián)關(guān)系,并對(duì)比了兩種方式的特點(diǎn)和適用場(chǎng)景,最后給出了最佳實(shí)踐建議
    2026-05-05
  • Springboot+Spring Security實(shí)現(xiàn)前后端分離登錄認(rèn)證及權(quán)限控制的示例代碼

    Springboot+Spring Security實(shí)現(xiàn)前后端分離登錄認(rèn)證及權(quán)限控制的示例代碼

    本文主要介紹了Springboot+Spring Security實(shí)現(xiàn)前后端分離登錄認(rèn)證及權(quán)限控制的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Springboot項(xiàng)目使用html5的video標(biāo)簽完成視頻播放功能

    Springboot項(xiàng)目使用html5的video標(biāo)簽完成視頻播放功能

    這篇文章主要介紹了Springboot項(xiàng)目使用html5的video標(biāo)簽完成視頻播放功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 詳解Maven私服Nexus的安裝與使用

    詳解Maven私服Nexus的安裝與使用

    這篇文章主要介紹了詳解Maven私服Nexus的安裝與使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • springcloud?eureka切換nacos的配置方法

    springcloud?eureka切換nacos的配置方法

    這篇文章主要介紹了springcloud?eureka切換nacos,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01

最新評(píng)論

潼南县| 广平县| 色达县| 滨州市| 策勒县| 孟连| 迁安市| 望都县| 醴陵市| 澄迈县| 木里| 昭觉县| 平果县| 邹城市| 延长县| 清新县| 七台河市| 沾益县| 饶平县| 牡丹江市| 如皋市| 南陵县| 利辛县| 三门县| 太谷县| 天峻县| 河池市| 务川| 五河县| 德钦县| 金华市| 洛浦县| 龙口市| 宜兰县| 吴江市| 广饶县| 贵港市| 阿克苏市| 杭州市| 中牟县| 营山县|