2011-04-02 12 views
5

मेरे पास एक वेब एप्लिकेशन है जहां उपयोगकर्ता ल्यूसीन इंडेक्स को क्वेरी सबमिट करते हैं। प्रश्न को ल्यूसीन QueryParser द्वारा पार्स किया गया है। मैंने कठिन तरीका सीखा है कि QueryParser थ्रेड-सुरक्षित नहीं है।एकाधिक धागे में ल्यूसीन क्वेरीपर्सर: प्रत्येक बार नया सिंक्रनाइज़ या निर्माण?

क्या यह एक QueryParser उदाहरण का उपयोग करना बेहतर है, और parse() विधि पर कॉल पर सिंक्रनाइज़ करना बेहतर है? या क्या प्रत्येक क्वेरी के लिए एक नया उदाहरण बनाना बेहतर है? (या मैं बेहतर QueryParser रों का एक पूल द्वारा कार्य किया जाएगा?)

मुझे पता है कि इस तरह से सामान्य प्रश्नों में ब्यौरे पर निर्भर करते हैं और रूपरेखा की आवश्यकता होती है, लेकिन शायद किसी को वहाँ निश्चित कह सकते हैं "QueryParser रों बेहद खर्चीली हैं/निर्माण करने के लिए महंगा "?

उत्तर

6

हर बार एक नया बनाएँ। ये हल्के ऑब्जेक्ट्स हैं और JVM ऑब्जेक्ट सृजन और कचरा संग्रह को बहुत अच्छी तरह से संभालता है। निश्चित रूप से एक ऑब्जेक्ट पूल का उपयोग न करें।

+0

+1 हां, निश्चित रूप से पूल (या एकल साझा करें) 'QueryParser' ऑब्जेक्ट का कोई कारण नहीं है। आगे पढ़ने: [जावा सिद्धांत और अभ्यास: शहरी प्रदर्शन किंवदंतियों, पुनरीक्षित] (http://www.ibm.com/developerworks/java/library/j-jtp09275/index.html) – WhiteFang34

+0

धन्यवाद! @ व्हाइटफैंग 34, यह लिंक सामान्य रूप से आवंटन की कम लागत के बारे में है, लेकिन यह निश्चित रूप से यह इंगित करने योग्य है कि ** ** ** कुछ प्रकार की वस्तुएं हैं जहां निर्माण सस्ता नहीं है क्योंकि आवंटन से बहुत सारे काम किए जाते हैं। ल्यूसीन दुनिया में अक्सर प्रदर्शन कारणों से एकल 'इंडेक्सशियर' साझा करने के लिए याद दिलाया जाता है। –

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