Pages

Friday, May 17, 2013

Guice Cache Example


package com.cefalo.mediator;

import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;

import java.util.concurrent.TimeUnit;

/**
 * @author humayun
 */
public class CacheTest {

    static LoadingCache<String, Animal> animalCache = CacheBuilder.newBuilder()
            .maximumSize(1000)
            .expireAfterWrite(5, TimeUnit.MINUTES)
            .build(new AnimalCacheLoader());

    public static void main(String args[]) throws Exception {
        for (int i = 0; i < 1000; ++i) {
            System.out.println(animalCache.get("ABC"));
        }
    }
}

class Animal {
    private final String name;

    public Animal(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Animal/" + name;
    }
}


class AnimalCacheLoader extends CacheLoader<String, Animal> {
    @Override
    public Animal load(String key) throws Exception {
        System.out.println("Loading : " + key);
        return new Animal(key);
    }
}

No comments:

Post a Comment