publisherCache = CacheBuilder.newBuilder() .concurrencyLevel(1) .maximumSize(500) .refreshAfterWrite(CACHE_DURATION,TimeUnit.SECONDS).build( new CacheLoader<Long, MediaPublisher>() { @Override public ListenableFuture<MediaPublisher> reload(Long key, MediaPublisher oldValue) throws Exception { checkNotNull(key); checkNotNull(oldValue); ListenableFutureTask<MediaPublisher> task = ListenableFutureTask.create(() -> load(key)); executor.submit(task); return task; } @Override public MediaPublisher load(Long appId) throws Exception { long startTime = System.currentTimeMillis(); try { MediaPublisher publisher = mediaPublisherDAO.getPublisher(appId); PerfCounter.count(UnionServiceConstants.COUNTER_GET_MEDIA_PUBLISHER + ".db", 1, System.currentTimeMillis() - startTime); if (null == publisher) { PerfCounter.count(UnionServiceConstants.COUNTER_GET_MEDIA_PUBLISHER_NULL, 1); return EMPTY_PUBLISHER; } return publisher; }catch (Exception e){ } } } );
guava初始化缓存
最新推荐文章于 2024-12-17 03:09:05 发布
本文介绍了一种使用 Java 编写的高效缓存机制,该机制通过 PublisherCache 对象实现,利用 CacheBuilder 进行构建,并设置了并发级别、最大容量及刷新策略。当缓存中的数据需要更新时,采用异步任务进行加载。
640

被折叠的 条评论
为什么被折叠?



