2011-09-30 18 views
9

मैं गुवा 10 में पेश किए गए CacheBuilder और Cache द्वारा थोड़ा उलझन में हूं। दस्तावेज संकेत देता है कि यह overwrite values पर संभव है लेकिन जहां तक ​​मैं कह सकता हूं, Cache में ऐसा करने के लिए कोई तरीका नहीं है। कोई विचार?गुवा के कैश क्लास में मूल्यों को कैसे रखा जाए?

मैं एक नक्शा बनाने की कोशिश कर रहा हूं जो अंतिम पढ़ने या लिखित-के बाद एक महत्वपूर्ण 10 सेकंड की अवधि समाप्त हो जाता है। जब कोई मान देखा जाता है, तो मैं पहले से सेट मान को वापस करने की अपेक्षा करता हूं, या यदि कोई मौजूद नहीं है तो गणना करने के लिए डिफ़ॉल्ट मान की गणना की जाती है।

नोट: यह प्रश्न पुराना है। यद्यपि उपरोक्त जावाडोक Cache.put(K key, V value) विधि का अस्तित्व दिखाता है, लेकिन यह प्रश्न तब मौजूद नहीं था जब प्रश्न पहले पोस्ट किया गया था।

उत्तर

6

लंबे समय से, Cache#asMapConcurrentMap दृश्य लौटा रहा है।

AFAIK, अभी तक नहीं। लेकिन वहाँ एक thread उल्लेख है कि Cache.asMap.put रिलीज़ करने की योजना है 11.

मैं कहेंगे जावाडोक की वर्तमान पुरानी स्थिति एक अवशेष है अगर CacheBuilder के MapMaker से विकास (जहां कैश-सेटिंग विधि वर्तमान में बहिष्कृत हैं)।

मैं एक मानचित्र बनाने की कोशिश कर रहा हूं जो अंतिम पढ़ने या लिखित-के बाद एक महत्वपूर्ण 10 सेकंड की अवधि समाप्त हो जाता है। जब कोई मान देखा जाता है, तो मैं पहले से सेट मान को वापस करने की अपेक्षा करता हूं, या यदि कोई मौजूद नहीं है तो गणना करने के लिए डिफ़ॉल्ट मान की गणना की जाती है।

expireAfterAccess(10, TimeUnit.SECONDS) का उपयोग करके किसी भी पहुंच के बाद 10 सेकंड के लिए एक प्रविष्टि जीवित रहेगी। और आपके द्वारा प्राप्त किए जाने वाले एकमात्र मान आपके CacheLoader (या तो पहले या get के दौरान) द्वारा गणना की गई हैं।

+3

अमरूद 10.0.1 को यह तय करना चाहिए था। http://groups.google.com/group/guava-discuss/browse_thread/thread/f01f7583bb4422d7 – jvdneste

3

मामूली अद्यतन। Cache.asMap().put() अक्टूबर, 2011 के पहले सप्ताह के दौरान कुछ समय के लिए गुवा 10.1 में दिखाना चाहिए। अधिक जानकारी के लिए this thread देखें।

संबंधित मुद्दे