ओरेकल के कार्यान्वयन [1] समानांतर धारा के वर्तमान धागे का उपयोग करता है और इसके अलावा, यदि आवश्यक हो, तो डिफ़ॉल्ट थ्रेड को बनाने वाले थ्रेड भी शामिल होते हैं पूल ForkJoinPool.commonPool()
, जो आपके सीपीयू के कोर की संख्या से कम एक डिफ़ॉल्ट आकार के बराबर है। ।
सामान्य पूल का डिफ़ॉल्ट आकार इस संपत्ति के साथ बदला जा सकता है:
-Djava.util.concurrent.ForkJoinPool.common.parallelism=8
वैकल्पिक रूप से, आप अपने स्वयं के पूल का उपयोग कर सकते हैं:
ForkJoinPool myPool = new ForkJoinPool(8);
myPool.submit(() ->
list.parallelStream().forEach();
).get();
आदेश के संबंध में, नौकरियों को निष्पादित किया जाएगा जैसे ही कोई थ्रेड उपलब्ध होगा, कोई विशिष्ट क्रम में नहीं।
जैसा कि @Holger द्वारा सही ढंग से बताया गया है कि यह एक कार्यान्वयन विशिष्ट विवरण है ( दस्तावेज़ के नीचे केवल एक अस्पष्ट संदर्भ के साथ ), दोनों दृष्टिकोण ओरेकल की JVM पर काम करेंगे, लेकिन निश्चित रूप से अन्य विक्रेताओं से JVM पर काम करने की गारंटी नहीं है, संपत्ति हो सकती है गैर-ओरेकल कार्यान्वयन में मौजूद नहीं है और स्ट्रीम पूरी तरह से बेकार ForkJoinPool
के व्यवहार के आधार पर वैकल्पिक रूप से रेंडरिंग का उपयोग नहीं कर सकते हैं ForkJoinTask.fork
( इस पर विवरण के लिए यहां देखें )।