网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

构建高效可申缩的结果缓存

摘自<>

洋县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:并发时不会重复计算,高效


分享文章:构建高效可申缩的结果缓存
网页链接:http://bjjierui.cn/article/iiesoe.html

其他资讯