चलें कहते हैं कि हम कुछ इस तरह है:Do जावा 8 समानांतर धाराओं एक दृश्य के लिए एक ही धागे का उपयोग
LongStream.range(0, 10).parallel()
.filter(l -> {
System.out.format("filter: %s [%s]\n", l, Thread.currentThread().getName());
return l % 2 == 0;
})
.map(l -> {
System.out.format("map: %s [%s]\n", l, Thread.currentThread().getName());
return l;
});
आप चलाते हैं इस कार्यक्रम के उत्पादन होगा कुछ की तरह:
filter: 6 [main]
map: 6 [main]
filter: 5 [main]
filter: 4 [ForkJoinPool.commonPool-worker-2]
map: 4 [ForkJoinPool.commonPool-worker-2]
filter: 1 [ForkJoinPool.commonPool-worker-3]
filter: 2 [ForkJoinPool.commonPool-worker-1]
filter: 0 [ForkJoinPool.commonPool-worker-3]
filter: 3 [ForkJoinPool.commonPool-worker-2]
filter: 8 [main]
filter: 7 [ForkJoinPool.commonPool-worker-2]
filter: 9 [ForkJoinPool.commonPool-worker-2]
map: 0 [ForkJoinPool.commonPool-worker-3]
map: 2 [ForkJoinPool.commonPool-worker-1]
map: 8 [main]`
के रूप में हम प्रत्येक लंबे समय तक कार्यों के प्रत्येक अनुक्रम को एक और एक ही थ्रेड द्वारा निष्पादित किया जा सकता है। क्या यह कुछ है जिस पर हम भरोसा कर सकते हैं, या यह सिर्फ एक संयोग है? निष्पादन के दौरान धागे 'शेयर' कार्य कर सकते हैं?