成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

構(gòu)建高效可申縮的結(jié)果緩存

摘自<<JAVA并發(fā)編程實(shí)戰(zhàn)>>

洋縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

public interface Computable<A, V> {
    V comput(A arg);
}

構(gòu)建高效可申縮的結(jié)果緩存

import java.util.concurrent.*;/**
 * 構(gòu)建高效可申縮的結(jié)果緩存
 * <p>
 * author: shiruiqiang
 * time: 31/01/2017 23:11
 **/public class Memoizer<A, V> implements Computable<A, V>{    private final ConcurrentHashMap<A, Future<V>> cache = new ConcurrentHashMap<A, Future<V>>();    private Computable<A, V> c;    public Memoizer(Computable c) {        this.c = c;
    }    public V comput(A arg) {        while(true) {
            Future<V> f = cache.get(arg);            if (f == null) { // 檢查是緩存中是否已經(jīng)存在,如果沒有就創(chuàng)建
                Callable<V> task = new Callable<V>() {
                    @Override                    public V call() throws Exception {                        return c.comput(arg);
                    }
                };
                FutureTask<V> ft = new FutureTask(task);
                f = cache.putIfAbsent(arg, ft); // 原子操作,不會重復(fù)計算                if (f == null) { // 如果緩存中原來沒有這個結(jié)果則執(zhí)行任務(wù)計算結(jié)果
                    f = ft;
                    ft.run();
                }
            }            try {
                return f.get(); // 阻塞,等待結(jié)果.如果已經(jīng)在緩存中則不會阻塞
            } catch(CancellationException e) {
                cache.remove(arg, f);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

構(gòu)建高效可申縮的結(jié)果緩存

上述代碼有多方面好處

1:計算與緩存隔離,解偶

2:線程安全

3:支持并發(fā)

4:并發(fā)時不會重復(fù)計算,高效

網(wǎng)站名稱:構(gòu)建高效可申縮的結(jié)果緩存
當(dāng)前鏈接:http://jinyejixie.com/article4/iiesoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈ChatGPT、自適應(yīng)網(wǎng)站、App開發(fā)、定制開發(fā)網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
隆化县| 澄城县| 双流县| 绥化市| 岐山县| 康平县| 永川市| 甘泉县| 绵竹市| 宁明县| 隆昌县| 公安县| 桐庐县| 偏关县| 陇南市| 白玉县| 揭西县| 鄂伦春自治旗| 白沙| 明星| 营山县| 台州市| 马边| 丰城市| 灵武市| 宁海县| 桐梓县| 莱阳市| 井研县| 陈巴尔虎旗| 文水县| 会同县| 昭觉县| 南郑县| 葵青区| 南开区| 五原县| 介休市| 根河市| 五家渠市| 奈曼旗|