বিকল্প 1:
নিউ ওয়ার্ক স্টিলিংপুল থেকেExecutors
public static ExecutorService newWorkStealingPool()
সমস্ত উপলভ্য প্রসেসরকে তার লক্ষ্য সমান্তরালতা স্তর হিসাবে ব্যবহার করে একটি ওয়ার্ক-স্টিলিং থ্রেড পুল তৈরি করে।
এই এপিআই দিয়ে আপনার কোনও সংখ্যক কোর পাস করার দরকার নেই ExecutorService
।
গ্রেপকোড থেকে এই 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)
এর সাথে এনট্রেডগুলি প্রতিস্থাপন করুন Runtime.getRuntime().availableProcessors()
বিকল্প 3:
ThreadPoolExecutor
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue)
Runtime.getRuntime().availableProcessors()
পরামিতি হিসাবে পাস maximumPoolSize
।