हां यह संभव है।
प्रक्रिया इस प्रकार है:
एक ForkJoinWorkerThreadFactory
है कि एक उचित प्राथमिकता के साथ धागे बनाता है बनाएँ।
उपरोक्त थ्रेड फैक्ट्री का उपयोग करके ForkJoinPool
बनाएं।
समानांतर धारा को त्वरित करें।
ForkJoinPool
कुछ इस तरह करने के लिए इसे प्रस्तुत करके धारा चलाएँ:
public class MyThread extends ForkJoinWorkerThread {
public MyThread(ForkJoinPool pool, int priority) {
super(pool);
setPriority(priority);
}
}
final int poolSize = ...
final int priority = ...
List<Long> aList = LongStream.rangeClosed(firstNum, lastNum).boxed()
.collect(Collectors.toList());
ForkJoinWorkerThreadFactory factory = new ForkJoinWorkerThreadFactory() {
public ForkJoinWorkerThread newThread(ForkJoinPool pool) {
return new MyThread(pool, priority);
}
};
/*
ForkJoinWorkerThreadFactory factory = pool -> new MyThread(
pool,
priority
);
*/
ForkJoinPool customThreadPool = new ForkJoinPool(
poolSize, factory, null, false);
long actualTotal = customThreadPool.submit(
() -> aList.parallelStream().reduce(0L, Long::sum)).get();
स्रोत
2017-11-26 05:53:00
'नई ForkJoinWorkerThread (उदाहरण कोड http://www.baeldung.com/java-8-parallel-streams-custom-threadpool से रूपांतरित)()' संकलित नहीं करता है। – shmosel
मैंने कहा "कुछ ऐसा" :-) इसे 'पूल' तर्क की आवश्यकता है। –
यह अभी भी संकलित नहीं करता है। मुझे लगता है कि आपको इसे उपclass करना है। – shmosel