guava 학습 노트-로 컬 캐 시 도구

로 컬 캐 시 도구
저 희 는 Concurrent HashMap 캐 시 데 이 터 를 자주 사용 합 니 다.데이터 key 가 존재 하면 바로 되 돌려 줍 니 다.그렇지 않 으 면 계산 한 후에 저장 하고 되 돌려 줍 니 다.guava 는 더 강력 한 캐 시 도 구 를 제공 합 니 다.사용 할 때 자신의 put 를 사용 하지 않 고 get 을 사용 할 때 자동 으로 캐 시 됩 니 다.전 제 는 load 데 이 터 를 실현 해 야 하 는 방법 입 니 다.
CacheLoader 로 구축:
    @Test
    public void testCacheWithLoader() throws ExecutionException {
        LoadingCache<String, Integer> cache = CacheBuilder.newBuilder()
                .maximumSize(1000)  //       
               .expireAfterAccess(10, TimeUnit.MINUTES) //    
                .build(
                        new CacheLoader<String, Integer>() {    //    
                            public Integer load(String key) {
                                return getObjectData(key);
                            }
                        });
        String k1 = "aaa";
        ConcurrentHashMap
        System.out.println(k1 + " value is: " + cache.get(k1));
        System.out.println(k1 + " value is: " + cache.get(k1));
        Assert.assertEquals(cache.get(k1), cache.get(k1));
    }

Callable 로 구축 하면 get 에서 사용자 정의 처 리 를 할 수 있 습 니 다.
    @Test
    public void testCacheWithCallable() {
        //       CacheLoader
        Cache cache = CacheBuilder.newBuilder().initialCapacity(1000).build();
        String key = "a";
        final Integer value = 1;
        try {
            Integer expectValue = cache.get(key, new Callable() {
                @Override
                public Integer call() throws Exception {
                    return value;
                }
            });
            assertEquals(expectValue, value);
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }

좋은 웹페이지 즐겨찾기