guava缓存,取出的是引用

简介:

直接上代码

import java.util.concurrent.TimeUnit;

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;

public class GuavaSample {

    private String name = "test";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public static Cache<String, GuavaSample> getCache() {
        return cache;
    }

    private static final Cache<String, GuavaSample> cache = CacheBuilder.newBuilder()
            .expireAfterWrite(120L, TimeUnit.MINUTES).build();

    public static void main(String[] args) {
        GuavaSample obj1 = new GuavaSample();

        cache.put("obj1", obj1);

        // 方法一,改了实例2的属性,看是否实例1的属性是否变化
        GuavaSample obj1_1 = cache.getIfPresent("obj1");
        GuavaSample obj1_2 = cache.getIfPresent("obj1");
        System.out.println("取出来的是否为同一个对象:" + (obj1_1 == obj1_2));

        // 方法二,改了实例2的属性,看是否实例1的属性是否变化
        obj1_1.setName("aaa");
        obj1_2.setName("bbb");
        System.out.println("取出来的是否为同一个对象:" + "bbb".equals(obj1_1.getName()));
    }
}
相关文章
|
3月前
|
存储 缓存 NoSQL
Guava 缓存详解及使用
Guava Cache 是`Google Fuava`中的一个内存缓存模块,用于将数据缓存到JVM内存中。 本文主要介绍下Guava缓存的配置详解及相关使用 缓存分为本地缓存与分布式缓存。本地缓存为了保证线程安全问题,一般使用`ConcurrentMap`的方式保存在内存之中,而常见的分布式缓存则有`Redis`,`MongoDB`等。
|
3月前
|
缓存 JavaScript Java
thymeleaf引用JS加随机数防止缓存
thymeleaf引用JS加随机数防止缓存
19 0
|
4月前
|
缓存 NoSQL Java
SpringBoot:第五篇 集成Guava(本地缓存+分布式缓存)
SpringBoot:第五篇 集成Guava(本地缓存+分布式缓存)
66 0
|
12月前
|
缓存 安全 Java
JNI之缓存与引用
NDK连载系列
48 0
|
存储 缓存 NoSQL
真正的缓存之王,Google Guava 只是弟弟(二)
真正的缓存之王,Google Guava 只是弟弟(二)
|
存储 缓存 监控
真正的缓存之王,Google Guava 只是弟弟(一)
前面刚说到Guava Cache,他的优点是封装了get,put操作;提供线程安全的缓存操作;提供过期策略;提供回收策略;缓存监控。当缓存的数据超过最大值时,使用LRU算法替换。这一篇我们将要谈到一个新的本地缓存框架:Caffeine Cache。它也是站在巨人的肩膀上-Guava Cache,借着他的思想优化了算法发展而来。 本篇博文主要介绍Caffine Cache 的使用方式,以及Caffine Cache在SpringBoot中的使用。
真正的缓存之王,Google Guava 只是弟弟(一)
|
缓存 Java
Guava之Supplier缓存使用示例
使用guava作内存缓存,大多数小伙伴应该都使用过,通过CacheBuilder创建LoadingCache一个kv格式的缓存,如果我们需要缓存的只是一个value呢? 针对这种场景,接下来介绍一种基于Supplier来实现的缓存方式
422 0
|
缓存 Java 算法
Java内存缓存-通过Google Guava创建缓存
谷歌Guava缓存 Guava介绍 Guava是Google guava中的一个内存缓存模块,用于将数据缓存到JVM内存中。实际项目开发中经常将一些公共或者常用的数据缓存起来方便快速访问。 Guava Cache是单个应用运行时的本地缓存。
1247 0
|
缓存 监控 安全
Guava Cache缓存设计原理(下)
Guava Cache基于ConcurrentHashMap的设计,在高并发场景支持和线程安全上都有相应改进策略,使用Reference引用命令,提升高并发下的数据访问速度并保持了GC的可回收,有效节省空间。 write链和access链的设计,能更灵活、高效的实现多种类型的缓存清理策略,包括基于容量的清理、基于时间的清理、基于引用的清理等。 编程式的build生成器管理,让使用者有更多的自由度,能够根据不同场景设置合适的模式。 还可以显式清除、统计信息、移除事件的监听器、自动加载等功能。
232 0
Guava Cache缓存设计原理(下)
|
存储 缓存 安全
Guava Cache缓存设计原理(上)
Guava Cache基于ConcurrentHashMap的设计,在高并发场景支持和线程安全上都有相应改进策略,使用Reference引用命令,提升高并发下的数据访问速度并保持了GC的可回收,有效节省空间。 write链和access链的设计,能更灵活、高效的实现多种类型的缓存清理策略,包括基于容量的清理、基于时间的清理、基于引用的清理等。 编程式的build生成器管理,让使用者有更多的自由度,能够根据不同场景设置合适的模式。 还可以显式清除、统计信息、移除事件的监听器、自动加载等功能。
278 0
Guava Cache缓存设计原理(上)