cache.get方法的两个参数:key,Callable对象

cache.get方法的两个参数:key,Callable对象

  1. Cache的get方法有两个参数,第一个参数是要从Cache中获取记录的key,第二个记录是一个Callable对象。
  2. 当缓存中已经存在key对应的记录时,get方法直接返回key对应的记录。如果缓存中不包含key对应的记录,Guava会启动一个线程执行Callable对象中的call方法,call方法的返回值会作为key对应的值被存储到缓存中,并且被get方法返回。
  3. Guava可以保证当有多个线程同时访问Cache中的一个key时,如果key对应的记录不存在,Guava只会启动一个线程执行get方法中Callable参数对应的任务加载数据存到缓存。当加载完数据后,任何线程中的get方法都会获取到key对应的值。
String value = cache.get("key", new Callable<String>() {
    public String call() throws Exception {
        System.out.println("load1"); //加载数据线程执行标志
        Thread.sleep(1000); //模拟加载时间
        return "auto load by Callable";
    }
});

参考:Guava Cache用法介绍

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在这个问题中,出现了一个类型错误(TypeError),提示是'module'对象不可调用(not callable)。据此我们可以初步判断,出现错误的原因可能是将一个模块对象(module object)错误地当作了可调用对象进行了调用。 针对这个问题,我们需要检查错误发生的地方。根据错误提示,错误出现在了"img = self.transform(img)"这一行代码上。 我们可以推测,问题可能出在"self.transform"上。根据错误提示,"self.transform"是一个模块对象。模块对象本身是不可调用的,但是通常会包含可调用的属性或方法。 为了找到正确的解决方案,我们需要查看代码中对于"self.transform"的定义和用法。我们需要确认"self.transform"是一个可调用的函数或方法。 如果"self.transform"是一个函数,那么可能是我们没有正确地调用这个函数(比如缺少参数等)。如果"self.transform"是一个方法,那么可能是我们没有正确地实例化这个类,或者没有正确地定义这个方法。 要解决这个问题,我们可以按照以下步骤进行操作: 1. 确保"self.transform"是一个可调用的函数或方法。 2. 如果是函数,检查调用是否正确,是否缺少参数等。 3. 如果是方法,检查类的实例化和方法的定义是否正确。 如果以上步骤都没有解决问题,那么可能需要查看更多的代码和错误信息,以便更准确地找到问题的根源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值