धागे स्वयं को न बनाएं। मैं आपको फोर्क/जॉइन फ्रेमवर्क (jsr166y) का उपयोग करने की सलाह देता हूं और आइटमों की एक निर्दिष्ट श्रृंखला पर फिर से काम करता हूं। हार्डवेयर समर्थन के रूप में कई धागे का उपयोग करके, यह आपके लिए थ्रेड प्रबंधन का ख्याल रखेगा।
कार्य ग्रैन्युलरिटी यहां मुख्य मुद्दा है। यदि प्रत्येक पुनरावृत्ति अपेक्षाकृत कम गणना है (100 से कम संचालन कहें) तो प्रत्येक पृथक्करण को एक अलग कार्य के रूप में निष्पादित करने से कार्य शेड्यूलिंग के बहुत सारे ओवरहेड पेश किए जाएंगे। प्रत्येक कार्य को गणना करने के लिए तर्कों की सूची स्वीकार करना बेहतर है, और परिणाम को सूची के रूप में वापस करना बेहतर है। इस तरह आप प्रत्येक कार्य को 1, 10 या हजारों तत्वों की गणना कर सकते हैं, ताकि कार्य स्तर को उचित स्तर पर रखा जा सके ताकि कार्य उपलब्ध कराने में संतुलन हो और कार्य प्रबंधन ओवरहेड को कम किया जा सके।
jsr166z में एक समांतर आरे वर्ग भी है, जो एक सरणी पर बार-बार गणना की अनुमति देता है। यह आपके लिए काम कर सकता है, यदि आपके द्वारा गणना की जाने वाली मान आदिम प्रकार हैं।
पहले पाश भी 'invokeAll के लिए एक एकल कॉल()' द्वारा बदला जा सकता है चाहेंगे। –
@ पीटर: ज्यादातर मामलों में, आपको सभी कॉलबल के निर्माण के लिए एक लूप चलाने की ज़रूरत होगी, वैसे भी उन्हें उस समय सबमिट कर सकते हैं। –
सत्य, जब तक कि कोई व्यक्ति अपनी प्रसंस्करण से कार्यों की तैयारी को अलग नहीं करना चाहता। –