Guava Cache -- MapMaker.makeComputingMap测试

Posted chenjunjie12321

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Guava Cache -- MapMaker.makeComputingMap测试相关的知识,希望对你有一定的参考价值。

canal中很多处使用了MigrateMap.makeComputingMap(Function<? super K, ? extends V> computingFunction)方法,第一次接触这个方法,刚开始完全不知道在干啥,这个function中的参数的作用是啥,怎么使用,何时触发,之后简单的测试了一下,大致知道了其作用。
package com.company;

import com.google.common.base.Function;
import com.google.common.collect.MigrateMap;

import java.util.concurrent.ConcurrentMap;


/**
 * @author chenjunjie
 * @since 2018-9-26
 */
public class GoogleColTestMain {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // makeComputingMap方法:根据this,创建一个NullComputingConcurrentMap或ComputingConcurrentMap。
        ConcurrentMap<String, String> testMap =  MigrateMap.makeComputingMap(new Function<String, String>() {
            /**
             * 这里就是绑定的根据key没找到value的时候触发的function,
             * 可以将这里的返回值放到对应的key的value中!
             * @param arg0
             * @return
             */
            public String apply(String arg0) {
                return "create:" + arg0;
            }

        });

        testMap.put("a", "testa");
        testMap.put("b", "testb");

        System.out.println(testMap.get("a"));
        System.out.println(testMap.get("b"));
        System.out.println(testMap.get("c"));
        System.out.println(testMap.get("d"));

        /**
         * 总结:
         * 运行结果可以知道,当map再调用get的时候如果根据key值获取不到value时,会触发function,执行apply方法。
         */
    }
}

测试结果:

"D:Program FilesJavajdk1.8.0_181injava.exe" ...
testa
testb
create:c
create:d
 
Process finished with exit code 0
 
 
从运行结果可以知道,当map再调用get的时候如果根据key值获取不到value时,会触发function,执行apply方法,并获取apply返回的值。
 
 

以上是关于Guava Cache -- MapMaker.makeComputingMap测试的主要内容,如果未能解决你的问题,请参考以下文章

guava cache 为啥删除元素时移动元素

分布式缓存系列之guava cache

Guava Cache

GUAVA CACHE(缓存) 总结

利用guava来实现本地的cache缓存

guava collection/cache初探