Monday, 11 May 2015

Guava Cache Memory Example


import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;

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

public class GuavaTest {
          
       private static GuavaTest gt = new GuavaTest();
   
        public static GuavaTest getInstance(){
            return gt;
        }  
        private LoadingCache<String,String> cache;
     
        private GuavaTest() {

          cache = CacheBuilder.newBuilder().refreshAfterWrite(2,TimeUnit.SECONDS).
                  build(new CacheLoader<String, String>(){

                    @Override
                    public String load(String arg0) throws Exception {
                        // TODO Auto-generated method stub
                        return addcache(arg0);
                    }

                  }
        );
      }
     
      private String addcache(String arg0) {
           System.out.println("Adding Cache");
          return arg0.toUpperCase();
        }
      public String getEntry(String args) throws ExecutionException{
          System.out.println(cache.size());
          return cache.get(args);
      }
     
      public static void main(String[] args) {
         GuavaTest gt = GuavaTest.getInstance();
         try {
            System.out.println(gt.getEntry("java"));
            System.out.println(gt.getEntry("java"));
            Thread.sleep(2100);
            System.out.println(gt.getEntry("java"));
            System.out.println(gt.getEntry("java"));
           
        } catch (ExecutionException e) {
            e.printStackTrace();
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
     
}

No comments:

Post a Comment