2013-04-14 11 views
6

मैं org.apache.http.client.HttpClient का उपयोग करता हूं। मेरे पास एक सवाल है जो इस वर्ग के उपयोग से संबंधित है।org.apache.http.client.HttpClient - प्रति अनुरोध एक?

क्या मुझे प्रति अनुरोध नया HttpClient बनाना चाहिए (उदा। क्योंकि यह एक हल्का ऑब्जेक्ट है) या कई http अनुरोधों के लिए एक अद्वितीय उदाहरण का उपयोग करना बेहतर है (उदा।, क्योंकि बनाना/हटाना महंगा है)? यदि HttpClient का केवल एक उदाहरण उपयोग किया जाना चाहिए, HttpClient थ्रेड सुरक्षित है (उदा।, यह एक ही समय में कई http अनुरोधों को संभाल सकता है) या HttpClient एस का पूल बनाने के लिए इस मामले में बेहतर है?

वास्तव में, मैं प्रति अनुरोध एक नया HttpClient बनाते हैं। मुझे संदेह है कि मुझे getConnectionManager().shutdown() का उपयोग करके मेरे आवेदन के उपयोग के अंत में बंद होने के लिए एक अनूठा उदाहरण बनाना होगा, लेकिन मुझे नहीं पता कि मैं थ्रेड-आधारित समांतरता को बनाए रख सकता हूं या नहीं।

+0

संकेत - 'DefaultHttpClient'' @ थ्रेडसेफ एनोटेशन के साथ आता है। –

+0

ओह, अच्छा ... तो मैं तर्क देता हूं कि इसे प्रति बार कई http अनुरोधों को संभालना चाहिए। –

+0

हां। [यहां और अधिक] (http://hc.apache.org/httpclient-3.x/performance.html)। 'HttpClient इंस्टेंस का पुन: उपयोग करें 'पर एक नज़र डालें। –

उत्तर

3

DefaultHttpClient@ThreadSafe एनोटेशन के साथ चिह्नित किया गया है, इसलिए आप इसे थ्रेड सुरक्षित तरीके से उपयोग कर सकते हैं। HTTPClient से प्रदर्शन दस्तावेज सक्रिय रूप से recommends जहां भी संभव हो एक एकल उदाहरण का उपयोग कर।

+0

मैं आपके धैर्य और संपूर्ण उत्तर के लिए धन्यवाद। मैं कोड को पुनर्गठित करने जा रहा हूं! –

+0

आपका स्वागत है। –

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