package com.taobao.saleengine.core.processor.onlinelearning.service.impl; import static com.google.common.base.Preconditions.checkNotNull; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; public class Test { public static void main(String[] args) { final Test xx = new Test(); Thread t = new Thread("aaa") { public void run() { try { System.out.println("0秒"); System.out.println(xx.get("1")); System.out.println(xx.get("2")); System.out.println(xx.get("3")); System.out.println(xx.get("4")); System.out.println(xx.get("5")); Thread.sleep(20 * 1000); System.out.println("20秒"); System.out.println(xx.get("1")); System.out.println(xx.get("2")); System.out.println(xx.get("3")); System.out.println(xx.get("4")); System.out.println(xx.get("5")); Thread.sleep(20 * 1000); System.out.println("40秒"); System.out.println(xx.get("1")); System.out.println(xx.get("2")); System.out.println(xx.get("3")); System.out.println(xx.get("4")); System.out.println(xx.get("5")); Thread.sleep(20 * 1000); System.out.println("60秒"); System.out.println(xx.get("1")); System.out.println(xx.get("2")); System.out.println(xx.get("3")); System.out.println(xx.get("4")); System.out.println(xx.get("5")); Thread.sleep(20 * 1000); System.out.println("80秒"); System.out.println(xx.get("1")); System.out.println(xx.get("2")); System.out.println(xx.get("3")); System.out.println(xx.get("4")); System.out.println(xx.get("5")); Thread.sleep(20 * 1000); System.out.println("100秒"); System.out.println(xx.get("1")); System.out.println(xx.get("2")); System.out.println(xx.get("3")); System.out.println(xx.get("4")); System.out.println(xx.get("5")); } catch (Exception e) { System.out.println("error!"); } } }; t.start(); } public String get(String key) throws ExecutionException { return localModelCache.get(key); } // 缓存模型 private final LoadingCache<String, String> localModelCache = CacheBuilder.newBuilder().refreshAfterWrite(1, TimeUnit.MINUTES).build(new CacheLoader<String, String>() { @Override public String load(String key) throws Exception { return loadModelFeature(key); } @Override public ListenableFuture<String> reload(String key, String oldValue) throws Exception { System.out.println("reload"); return reloadListenableFuture(key, oldValue); } }); public ListenableFuture<String> reloadListenableFuture(String key, String oldValue) throws Exception { checkNotNull(key); checkNotNull(oldValue); return Futures.immediateFuture(oldValue + "reloadable"); } private String loadModelFeature(String key) { System.out.println("===================" + "从本地装载" + key + "==================="); return key + "1"; } }
相关推荐
使用google guava 实现定时缓存功能
guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档guava源文档...
赠送jar包:guava-17.0.jar; 赠送原API文档:guava-17.0-javadoc.jar; 赠送源代码:guava-17.0-sources.jar; 赠送Maven依赖信息文件:...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:guava-23.0.jar; 赠送原API文档:guava-23.0-javadoc.jar; 赠送源代码:guava-23.0-sources.jar; 赠送Maven依赖信息文件:...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
guava
├─Google Guava 第01讲-Joiner详细介绍以及和Java8Collector对比.wmv ├─Google Guava 第02讲-Guava Splitter详细讲解以及实战练习.wmv ├─Google Guava 第03讲-Preconditions&Objects;&assert;讲解.wmv ├─...
guava-23.0.zip guava.jar guava
赠送jar包:guava-18.0.jar; 赠送原API文档:guava-18.0-javadoc.jar; 赠送源代码:guava-18.0-sources.jar; ...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
guava-19.0.jar和guava-19.0-sources.jar 亲测可以用
赠送jar包:guava-20.0.jar; 赠送原API文档:guava-20.0-javadoc.jar; 赠送源代码:guava-20.0-sources.jar; 赠送Maven依赖信息文件:...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
Google Guava是一个比较有趣的框架,它提供了很多有趣的的功能, google Guava 给开发者提供了如下常用功能: 集合(collections) 缓存(caching) 原生的类型支持(primitives support) 并发类库(concurrency ...
guava-18.0包含: 1.guava-18.0.jar 2.guava-18.0-sources.jar
赠送jar包:guava-27.0.1-jre.jar; 赠送原API文档:guava-27.0.1-jre-javadoc.jar; 赠送源代码:guava-27.0.1-jre-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:guava-30.0-jre.jar; 赠送原API文档:guava-30.0-jre-javadoc.jar; 赠送源代码:guava-30.0-jre-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:guava-16.0.1.jar; 赠送原API文档:guava-16.0.1-javadoc.jar; 赠送源代码:guava-16.0.1-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
guava-23.6-android guava 版本23.6的 jar 包
赠送jar包:guava-28.2-jre.jar; 赠送原API文档:guava-28.2-jre-javadoc.jar; 赠送源代码:guava-28.2-jre-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
赠送jar包:guava-30.1.1-jre.jar; 赠送原API文档:guava-30.1.1-jre-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。
赠送jar包:guava-22.0.jar; 赠送原API文档:guava-22.0-javadoc.jar; 赠送源代码:guava-22.0-sources.jar; 赠送Maven依赖信息文件:...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
Guava 工程包含了若干被 Google 的 Java 项目广泛依赖 的核心库,希望通过此文档为 Guava 中最流行和最强大的功能,提供更具可读性和解释性的说明