cache java是什么, 讓我們一起了解一下?
Cache?是一個像 Map 一樣的數據結構,它允許基于 Key 的臨時儲存。緩存被單個?CacheManager?擁有。
Java 的緩存 API 定義了五個核心接口:CachingProvider,CacheManager,Cache,Entry?和?ExpiryPolicy。
Java實現cache的基本機制是什么?
我這里說的cache不是指CPU和RAM之間的緩存,而是java應用中間常用的緩存。最常使用的場合就是訪問數據庫的時候為了提高效率而使用的 cache。一般的用法就是把數據從數據庫讀到內存,然后之后的數據訪問都從內存來讀,從而減少對數據庫的讀取次數來提高效率。
說了這么多,Java?下到底如何實現Cache,希望下面的實際案例可以幫助到你。
public?class?CacheFactory?{ ???private?static?ConcurrentHashMap?caches?=?new?ConcurrentHashMap<>(); ???private?static?ScheduledExecutorService?executorService?=?Executors.newScheduledThreadPool(1); ? ???private?static?void?register(Cache?cache)?{ ??????caches.put(cache.category(),?cache); ???} ? ???private?static?void?registerAll()?{ ??????register(new?StockCache()); ???} ? ???public?static?void?init()?{ ??????registerAll(); ? ??????for?(Cache?cache?:?caches.values())?{ ?????????executorService.scheduleAtFixedRate(new?Runnable()?{ ????????????@Override ????????????public?void?run()?{ ???????????????cache.refresh(); ????????????} ?????????},?0,?cache.interval(),?TimeUnit.MILLISECONDS); ??????} ???} ? ???public?static?Cache?getCache(String?key)?{ ??????if?(caches.contains(key))?{ ?????????return?caches.get(key); ??????} ??????return?null; ???} } ? //?cache接口除了需要提供interval和refresh以外,還需要提供一個category來區分不同的Cache public?interface?Cache?{ ???/** ????*?Refresh?the?cache.?If?succeed,?return?true,?else?return?false; ????*? ????*?@return ????*/ ???boolean?refresh(); ? ???/** ????*?How?much?time?it?will?refresh?the?cache. ????*? ????*?@return ????*/ ???long?interval(); ? ???/** ????*?Cache's?category.?Each?cache?has?distinct?category. ????*? ????*?@return ????*/ ???String?category(); }
以上就是小編今天的分享了,希望可以幫助到大家。