2013-01-23 21 views
5

मेरा विस्तारित स्विंगवर्कर क्लास एक संभावित पुन: आवंटित पृष्ठभूमि कार्य करता है जिसके लिए जीयूआई मूल इनपुट चर की आवश्यकता होती है।क्या मैं हर बार Java SwingWorker का नया उदाहरण बनाना चाहता हूं जब मैं doInBackground() को आमंत्रित करना चाहता हूं?

  1. वर्ग का एक नया उदाहरण हर बार मैं इसका इस्तेमाल शुरू करने और निर्माता के लिए चर पास करने के लिए:

    2 कोडिंग विकल्प देखें। मुझे लगता है कि मुझे यह सुनिश्चित करना चाहिए कि कई उदाहरणों के लिए नहीं हैं। यदि हां, तो कैसे? मल्टीटन या कुछ अन्य विधि?

  2. चर अद्यतन करें और फिर से निष्पादित करें? यदि ऐसा है तो मैं कैसे सुनिश्चित कर सकता हूं कि मैं बाधित नहीं कर रहा हूं?

क्या इनमें से कोई एक विकल्प है या बेहतर तरीका है?

+0

क्या इस सवाल का multithreading के साथ rellated, हो सकता है संभावित जवाब के लिए महत्वपूर्ण हो सकता है – mKorbel

+1

SwingWorker फिर से प्रवेशी, वह है नहीं है, आप इसे फिर से अमल नहीं कर सकते – MadProgrammer

उत्तर

3

Plase उपयोग विकल्प 1.

अपरिवर्तनीय वस्तुओं सामान्य रूप से साथ काम करने के लिए आसान कर रहे हैं। उदाहरण के लिए, आप समस्या को रोकते हैं कि कार्यकर्ता अभी भी काम कर रहे हैं, जबकि चर अद्यतन कर रहे हैं, और आपको स्मृति दृश्यता के बारे में कम सोचना होगा।

ऑब्जेक्ट इंस्टेंटेशन जावा में काफी सस्ता है, इसलिए यह एक प्रदर्शन समस्या नहीं होगी और आप हर बार एक नया उदाहरण बना सकते हैं।

+0

धन्यवाद मैं 5 मिनट में स्वीकृति दे देंगे जब मैं कर रहा हूँ है की अनुमति दी। मैं इस सस्तापन को कैसे माप सकता हूं? –

5

स्विंगवर्कर गैर-प्रवेशक है, जिसका अर्थ है कि आप इसे फिर से निष्पादित नहीं कर सकते हैं, वैसे ही थ्रेड हैं।

Javadocs

SwingWorker केवल एक बार निष्पादित करने के लिए डिज़ाइन किया गया है से

। स्विंगवर्कर को एक से अधिक बार निष्पादित करने से परिणामस्वरूप doInBackground विधि का दो बार उपयोग नहीं किया जाएगा।