当前位置: 首页 > 工具软件 > Caffeine > 使用案例 >

Caffeine示例

柴亦
2023-12-01

@SneakyThrows
public static void main(String[] args) {
LoadingCache<String, String> cache = Caffeine.newBuilder()
.maximumSize(5)
.expireAfterWrite(10, TimeUnit.MINUTES)
.build(key -> {
// 加载时,睡眠一秒
Thread.sleep(1000);
return key + System.currentTimeMillis();
});

// 异步线程加载
new Thread(() -> {
    System.out.println("执行get");
    cache.get("key");
}).start();

// 异步线程移除
new Thread(() -> {
    // 睡眠,让这个线程后执行
    try {
        Thread.sleep(200);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println("执行invalidate");
    cache.invalidate("key");
}).start();

// 按程序逻辑来说,我们应该拿到的结果是空map
Thread.sleep(1200);
System.out.println(cache.asMap());

}
@SneakyThrows
public static void main(String[] args) {
LoadingCache<String, String> cache = Caffeine.newBuilder()
.maximumSize(5)
.expireAfterWrite(10, TimeUnit.MINUTES)
.build(key -> {
// 加载时,睡眠一秒
Thread.sleep(1000);
return key + System.currentTimeMillis();
});

// 异步线程加载
new Thread(() -> {
    System.out.println("执行get");
    cache.get("key");
}).start();

// 异步线程移除
new Thread(() -> {
    // 睡眠,让这个线程后执行
    try {
        Thread.sleep(200);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println("执行invalidate");
    cache.invalidate("key");
}).start();

// 按程序逻辑来说,我们应该拿到的结果是空map
Thread.sleep(1200);
System.out.println(cache.asMap());

}

 类似资料: