package com.neo.config;

import org.springframework.stereotype.Component;

import java.util.Map;

import java.util.concurrent.ConcurrentHashMap;

import java.util.concurrent.Executors;

import java.util.concurrent.ScheduledExecutorService;

import java.util.concurrent.TimeUnit;
@Component
public class GlobalCache {

private Map<String, Object> cacheMap;

private ScheduledExecutorService executorService;

public GlobalCache() {

this.cacheMap = new ConcurrentHashMap<>();

this.executorService = Executors.newSingleThreadScheduledExecutor();

}

public void put(String key, Object value, long expiringTime, TimeUnit timeUnit) {

this.cacheMap.put(key, value);

this.executorService.schedule(() -> this.cacheMap.remove(key), expiringTime, timeUnit);

}

public Object get(String key) {

return this.cacheMap.get(key);

}

public void remove(String key) {

this.cacheMap.remove(key);

}

public void clear() {

this.cacheMap.clear();

}

public void stop() {

this.executorService.shutdown();

}

public static void main(String[] args) throws InterruptedException {

GlobalCache cache = new GlobalCache();

cache.put("key1", "value1", 2, TimeUnit.SECONDS);

System.out.println(cache.get("key1")); // value1

Thread.sleep(3000);

System.out.println(cache.get("key1")); // null

cache.stop();

}
}

GlobalCache 工具类的更多相关文章

  1. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  2. Android—关于自定义对话框的工具类

    开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...

  3. [转]Java常用工具类集合

    转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...

  4. js常用工具类.

    一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...

  5. Guava库介绍之实用工具类

    作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文是我写的Google开源的Java编程库Guava系列之一,主要介 ...

  6. Java程序员的日常—— Arrays工具类的使用

    这个类在日常的开发中,还是非常常用的.今天就总结一下Arrays工具类的常用方法.最常用的就是asList,sort,toStream,equals,copyOf了.另外可以深入学习下Arrays的排 ...

  7. .net使用正则表达式校验、匹配字符工具类

    开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: /// <summary> /// 字符(串)验证.匹配工具类 /// </summary> public c ...

  8. WebUtils-网络请求工具类

    网络请求工具类,大幅代码借鉴aplipay. using System; using System.Collections.Generic; using System.IO; using System ...

  9. JAVA 日期格式工具类DateUtil.java

    DateUtil.java package pers.kangxu.datautils.utils; import java.text.SimpleDateFormat; import java.ut ...

  10. 安卓---Toast工具类,有点懒

    package com.liunan.myfirstapp.util; import android.content.Context; import android.widget.Toast; /** ...

随机推荐

  1. vue3 基础-常用模板语法

    一个 vue 的单文件 SAP ( single page web application ) 即在一个 .vue 为后缀的文件中, 会包含3个部分. 模板: html 逻辑: javascript ...

  2. Flutter对于移动端软件跨平台后台保活的技术浅析

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 18px; o ...

  3. Vue中的APP与js的对象字面量

    JavaScript的对象字面量是一种方便创建和初始化对象的语法.它允许您直接在代码中定义对象,而无需使用类或构造函数.对象字面量使用大括号{}括起来,并包含零个或多个键值对. 以下是JavaScri ...

  4. 我的Vue之旅(3)

    2020-10-24 程序员节快乐哈! 因为有相当一部分内容都是相互穿插的,今天也就不写那么多重复的Demo了,直接写一下对所学内容的理解吧. 插值 关于插值这一块其实也没啥说的,文本插值都是最熟悉不 ...

  5. ArkUI-X添加到现有Android项目中

    本教程主要讲述如何利用ArkUI-X SDK完成Android AAR开发,实现基于ArkTS的声明式开发范式在android平台显示.包括: 1.跨平台Library工程开发介绍 2.AAR在And ...

  6. 构建具备推理与反思能力的高级 Prompt:LLM 智能代理设计指南

    在构建强大的 AI 系统,尤其是基于大语言模型(LLM)的智能代理(Agent)时,Prompt 设计的质量决定了系统的智能程度.传统 Prompt 通常是简单的问答或填空式指令,而高级任务需要更具结 ...

  7. CSP-J/S第一轮初赛 ~持续更新~

    CSP-J/S初赛 2022更新的初赛知识汇总 基础算法 链表 插入删除数据,操作数据O(1),遍历是O(n),可以进行动态调整. 指针指向的是上下节点,链表储存 数据 下一个节点 上一个节点. 动态 ...

  8. Oracle DBA必备工具:自动调整重做日志文件大小和数量

    我们的文章会在微信公众号Oracle恢复实录和博客网站(www.htz.pw)同步更新 ,欢迎关注收藏.也欢迎大家转载,但请在文章开始处标注文章出处,谢谢! 由于博客中包含大量代码,建议通过网页浏览以 ...

  9. 前后端分别判断两个数组 A数组有的元素B数据没有

    前端: FilterData(a, b) { //循环判断数组a里的元素在b里面有没有,有的话就放入新建立的数组中 //a有 b没有 var result = new Array(); var c = ...

  10. Golang基础笔记三之数组和切片

    本文首发于公众号:Hunter后端 原文链接:Golang基础笔记三之数组和切片 这一篇笔记介绍 Golang 里的数组和切片,以下是本篇笔记目录: 数组定义和初始化 数组属性和相关操作 切片的创建 ...