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

SpringBoot中的ExpiringMap代碼實例

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

1、簡介

ExpiringMap是一個可以設置過期策略、可變條目過期、延遲條目加載和過期偵聽器的線程安全存儲容器。

2、引入依賴

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

3、過期時間

    private static void demo01() throws InterruptedException {
        ExpiringMap<String, Object> map = ExpiringMap.builder()
                // 過期時間: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("超過過期時間,自動刪除");
    }

在這里插入圖片描述

4、重置過期時間

    private static void demo01_2() throws InterruptedException {
        ExpiringMap<String, Object> map = ExpiringMap.builder()
                // 允許映射條目具有單獨的到期日,并允許更改到期日
                //.variableExpiration()
                // 過期時間: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重置過期時間
                map.setExpiration("name", 5000, TimeUnit.MILLISECONDS);
            }
        }
        log.info("超過過期時間,自動刪除");
    }

未啟用variableExpiration

在這里插入圖片描述

啟用variableExpiration

在這里插入圖片描述

5、過期策略

ExpirationPolicy.ACCESSED:訪問或更新元素時,重置過期時間(即過期時間重新從零計算)

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

    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);
    }

在這里插入圖片描述

經測試,

  • ACCESSED過期策略:調用get、put、replace等方法時,都會重置過期時間;
  • CREATED過期策略:調用put、replace等方法時,會重置過期時間,get不會。

6、容器最大值

超過最大值,最早的元素被移除

    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、過期偵聽器

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

在這里插入圖片描述

8、單個元素配置

    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);
        }
    }

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

相關文章

  • 一文掌握maven??filtering標簽

    一文掌握maven??filtering標簽

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

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

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

    利用Java代碼寫一個并行調用模板

    這篇文章主要介紹了利用Java代碼寫一個并行調用模板,文章基于Java的相關內容展開寫一個并行調用模板的詳細介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • 詳解Java中兩種分頁遍歷的使用姿勢

    詳解Java中兩種分頁遍歷的使用姿勢

    這篇文章主要介紹了詳解Java中兩種分頁遍歷的使用姿勢,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Windows下Java調用OCR進行圖片識別

    Windows下Java調用OCR進行圖片識別

    這篇文章主要為大家詳細介紹了Windows下Java調用OCR進行圖片識別,通過Tesseract-OCR對圖片進行識別,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • MyBatis-Flex多表關聯查詢指南分享

    MyBatis-Flex多表關聯查詢指南分享

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

    Springboot+Spring Security實現前后端分離登錄認證及權限控制的示例代碼

    本文主要介紹了Springboot+Spring Security實現前后端分離登錄認證及權限控制的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Springboot項目使用html5的video標簽完成視頻播放功能

    Springboot項目使用html5的video標簽完成視頻播放功能

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

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

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

    springcloud?eureka切換nacos的配置方法

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

最新評論

甘肃省| 博野县| 明光市| 怀宁县| 望奎县| 平舆县| 德钦县| 抚宁县| 通江县| 上虞市| 崇明县| 册亨县| 老河口市| 东阿县| 连州市| 沂水县| 长子县| 嘉义县| 昌平区| 晋中市| 芒康县| 陈巴尔虎旗| 平凉市| 偃师市| 馆陶县| 柳江县| 丰宁| 山东省| 高雄县| 大冶市| 晋江市| 靖江市| 鄂州市| 天水市| 怀远县| 阿拉善左旗| 岳池县| 平邑县| 噶尔县| 阳朔县| 昌都县|