विकल्प 1:
newWorkStealingPool सेExecutors
public static ExecutorService newWorkStealingPool()
सभी उपलब्ध प्रोसेसरों को अपने लक्ष्य समांतरता स्तर के रूप में उपयोग करते हुए एक कार्य-चोरी धागा पूल बनाता है।
इस API के साथ, आपको कोर की संख्या को पास करने की आवश्यकता नहीं है ExecutorService
।
Grepcode से इस API का कार्यान्वयन
/**
* Creates a work-stealing thread pool using all
* {@link Runtime#availableProcessors available processors}
* as its target parallelism level.
* @return the newly created thread pool
* @see #newWorkStealingPool(int)
* @since 1.8
*/
public static ExecutorService newWorkStealingPool() {
return new ForkJoinPool
(Runtime.getRuntime().availableProcessors(),
ForkJoinPool.defaultForkJoinWorkerThreadFactory,
null, true);
}
विकल्प 2:
newFixedThreadPool API सेExecutors
या other newXXX constructors
, जो लौटाता हैExecutorService
public static ExecutorService newFixedThreadPool(int nThreads)
nThreads से प्रतिस्थापित करें Runtime.getRuntime().availableProcessors()
विकल्प 3:
ThreadPoolExecutor
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue)
Runtime.getRuntime().availableProcessors()
पैरामीटर के रूप में पास करें maximumPoolSize
।