/*** v2支撑* @author chenzhen*         Created by chenzhen on 2018/11/20.*/
public class TypeNumberCache {private static Logger logger = LoggerFactory.getLogger(TypeNumberCache.class);private static EntityInfoDaoImpl entityInfoDao = new EntityInfoDaoImpl();/*** LRU算法*/private static LoadingCache<String, Integer> localCache = CacheBuilder.newBuilder().initialCapacity(1000).maximumSize(2000).refreshAfterWrite(2, TimeUnit.MINUTES).build(new CacheLoader<String, Integer>() {//默认的数据加载实现,当调用get取值的时候,如果key没有对应的值,就调用这个方法进行加载.@Overridepublic Integer load(String s) throws Exception {Integer value = entityInfoDao.listEntityBy("_type",s).size();TypeNumberCache.setKey(s,value);return value;}@Overridepublic ListenableFuture<Integer> reload(String key, Integer oldValue) throws Exception {//asynchronous,异步刷新ListenableFutureTask<Integer> task = ListenableFutureTask.create(new Callable<Integer>() {@Overridepublic Integer call() throws Exception {return entityInfoDao.listEntityBy("_type",key).size();}});ExecutorService executorService = CacheExecutorServiceUtil.newExecutorService();executorService.execute(task);executorService.shutdown();return task;}});public static void setKey(String key, Integer value) {localCache.put(key, value);}public static Integer getKey(String key) {Integer value;try {value = localCache.get(key);if (value==null) {return -1;}return value;} catch (Exception e) {logger.error("TypeNumberCache get error", e);}return -1;}public static void cleanUp() {localCache.cleanUp();}
}

自定义线程池

/*** Guava缓存自定义线程池* @author chenzhen*         Created by chenzhen on 2018/11/27.*/
public class CacheExecutorServiceUtil {private static final int CORE_POOL_SIZE = 10;private static final int MAXIMUM_POOL_SIZE = 30;private static final long KEEP_ALIVE_TIME = 10L;private static final TimeUnit TIME_UNIT = TimeUnit.SECONDS;private static final ThreadFactory THREAD_FACTORY = new ThreadFactory() {private final ThreadFactory defaultFactory = Executors.defaultThreadFactory();private final AtomicInteger threadNumber = new AtomicInteger(1);@Overridepublic Thread newThread(Runnable r) {Thread thread = this.defaultFactory.newThread(r);if(!thread.isDaemon()) {thread.setDaemon(true);}thread.setName("Guava-Cache" + this.threadNumber.getAndIncrement());return thread;}};public static ExecutorService newExecutorService() {return new ThreadPoolExecutor(CORE_POOL_SIZE,MAXIMUM_POOL_SIZE, KEEP_ALIVE_TIME, TIME_UNIT, new ArrayBlockingQueue<>(200), THREAD_FACTORY);}}

JAVA日常优化---Guava缓存玩耍异步刷新相关推荐

  1. memcached java 客户端优化,分布式缓存技术memcached学习系列(五)—— memcached java客户端的使用...

    Memcached的客户端简介 我们已经知道,memcached是一套分布式的缓存系统,memcached的服务端只是缓存数据的地方,并不能实现分布式,而memcached的客户端才是实现分布式的地方 ...

  2. 缓存系统MemCached的Java客户端优化历程

    來源:http://www.infoq.com/cn/articles/memcached-java 作者 岑文初 发布于 2008年9月27日 上午12时38分 社区 Java 主题 集群与缓存 M ...

  3. java获取本机ipv4,并使用Google Guava 缓存

    java写个util,获取本机ip,并使用Google Guava 缓存起来 四个方法: 获取本机ipv4 ip转16进制 16进制转ip 校验ip 首先,Google Guava使用的maven配置 ...

  4. 拉勾教育 | Java 性能优化实战 21 讲

    开篇词 开篇词 | Java 性能优化,是进阶高级架构师的炼金石 你好,我是李国.作为<Java 性能优化与面试 21 讲>这个课程的作者,我先来简单介绍下自己. 我曾任京东金融.陌陌科技 ...

  5. Google的Java常用类库 Guava

    Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库.这个库是为了方便编码,并减少编码错误.这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验 ...

  6. Google guava第一讲:guava缓存实战/使用场景/缓存清理/最佳实践/caffeine实战

    Guava缓存实战及使用场景 摘要:本文是Google guava 第一件,本文先介绍了为什么使用Guava Cache缓存,然后讲解了使用方法及底层数据结构,结合实际业务,讲解使用guava过程中踩 ...

  7. Java类库Google Guava学习

    参考 官网 https://github.com/google/guava Google Guava官方教程(中文版) | 并发编程网 – ifeve.com 一篇让你熟练掌握Google Guava ...

  8. Java面试题:缓存三大问题及解决方案!

    Java面试少不了一些技术类型的笔试题,面试过程中很多小伙伴可能表达很好,结果Java基础不是很牢固,所以今天针对Java笔试题,小编汇总来一下Java的面试题缓存三大问题及解决方案. 1. Java ...

  9. 赠书:《Java性能优化实践》,众多业内大佬推荐阅读

    没有捷径可走的 Java 性能优化 多年来,用 Google 搜索 Java performance tuning,出现的三篇最热门文章之一是于 1997 年到 1998 年左右发表的文章,这篇文章在 ...

  10. java性能优化权威指南_Java性能优化权威指南 PDF扫描[132MB]

    Java性能优化权威指南主要为Java SE 和Java EE 应用的性能调优提供建议.主要包括以下几方面:性能监控.性能分析.Java HotSpot VM 调优.高效的基准测试以及Java EE ...

最新文章

  1. 语义网所谓的“本体”的具体例子是什么?人工智能
  2. vue中阻止冒泡事件
  3. 【C 语言】字符串模型 ( 键值对模型 )
  4. 「Sqlserver」数据分析师有理由爱Sqlserver之三-最值得使有低投入高产出的Sqlserver功能...
  5. windows下python SSH-Client模块paramiko的安装与修改
  6. Linq的Distinct太不给力了
  7. “华硕zx50j,键盘背光灯无法显示,fn组合键不可用”解决办法
  8. 服务器显示A40故障码,求助大神,车子出现故障码,5053无法消除
  9. 使用smartdns加速DNS域名解析
  10. You may need an appropriate loader to handle this file type, currently no loaders are configured to
  11. 关于标志信息ZF、OF、SF、CF的理解
  12. 斐讯K2刷固件(支持v22.4.2.15以上)
  13. 微信公众号(服务号)申请时候需要补充的资料
  14. 数据校验validation
  15. 契约锁电子签章在食品行业全产业链的应用场景
  16. 【题解】2020年蓝桥杯C/C++程序设计B组·试题 D: REPEAT 程序
  17. 第12章 项目沟通管理和干系人管理
  18. PWN入门(3)覆盖堆栈上的变量
  19. 百度商家口碑将停止运营并下线
  20. 字节跳动测试岗面试挂在二面,我复盘总结了失败原因,决定再战一次

热门文章

  1. 《Android UI基础教程》——1.4节工具
  2. react-native 解决“Could not get BatchedBridge...” 的问题
  3. AFNetwork 作用和使用方法具体解释
  4. CCIE学习笔记 2---BGP选路(属性值)
  5. gcms基峰有什么用_金鉴实验室 | 气相质谱(GCMS)
  6. linux中文件大小的分配,Linux创造固定的文件大小-预分配磁盘空间
  7. oracle 表列统计信息,Oracle中收集表与列统计信息
  8. python载入图片序列_python – 使用matplotlib显示图像序列
  9. word中填充效果锁定纵横比_操作基础知识Word文字编辑
  10. html合并单元格_HTML基础2