从品牌网站建设到网络营销策划,从策略到执行的一站式服务
摘自<
洋县ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
public interface Computable { V comput(A arg); }
import java.util.concurrent.*;/** * 构建高效可申缩的结果缓存 ** author: shiruiqiang * time: 31/01/2017 23:11 **/public class Memoizer implements Computable{ private final ConcurrentHashMap> cache = new ConcurrentHashMap>(); private Computable c; public Memoizer(Computable c) { this.c = c; } public V comput(A arg) { while(true) { Future
f = cache.get(arg); if (f == null) { // 检查是缓存中是否已经存在,如果没有就创建 Callable task = new Callable () { @Override public V call() throws Exception { return c.comput(arg); } }; FutureTask ft = new FutureTask(task); f = cache.putIfAbsent(arg, ft); // 原子操作,不会重复计算 if (f == null) { // 如果缓存中原来没有这个结果则执行任务计算结果 f = ft; ft.run(); } } try { return f.get(); // 阻塞,等待结果.如果已经在缓存中则不会阻塞 } catch(CancellationException e) { cache.remove(arg, f); } catch (Exception e) { e.printStackTrace(); } } } }
上述代码有多方面好处
1:计算与缓存隔离,解偶
2:线程安全
3:支持并发
4:并发时不会重复计算,高效
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图