एक थ्रेड पूल पूर्व-आरंभिक थ्रेड्स का संग्रह है। थ्रेड पूल के पीछे सामान्य योजना विधि स्टार्टअप पर कई थ्रेड्स बनाना और उन्हें एक पूल में रखना है, जहां वे बैठते हैं और काम की प्रतीक्षा करते हैं। जब एक सर्वर भागीदारी के लिए कॉल प्राप्त करता है, तो यह इस पूल से एक थ्रेड को जगाता है—यदि कोई उपलब्ध है—और उसे सेवा के लिए अनुरोध पास करता है। एक बार जब थ्रेड अपनी सेवा पूरी कर लेता है, तो यह पूल में लौट आता है और अधिक काम की प्रतीक्षा करता है। यदि पूल में कोई सुलभ थ्रेड नहीं है, तो सर्वर तब तक प्रतीक्षा करता है जब तक कि कोई मुक्त न हो जाए।
यह समय बचाता है क्योंकि नया थ्रेड बनाने की कोई आवश्यकता नहीं होती है।
इसका उपयोग सर्वलेट और JSP में किया जाता है जहां कंटेनर अनुरोध को संसाधित करने के लिए एक थ्रेड पूल बनाता है।
उदाहरण
EmployeeThread.java
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; class EmployeeThread implements Runnable { private String message; public EmployeeThread(String s) { this.message=s; } public void run() { System.out.println(Thread.currentThread().getName()+" (Start) message = "+message); processmessage();// processmessage विधि को कॉल करें जो थ्रेड को 2 सेकंड के लिए सुलाती है System.out.println(Thread.currentThread().getName()+" (End)");// थ्रेड नाम प्रिंट करता है } private void processmessage() { try { Thread.sleep(1000); } catch (InterruptedException e){ e.printStackTrace(); } } } ExampleThreadPool.java
public class implementThreadPool { public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(6); // 6 थ्रेड्स का पूल बनाना for (int m = 0; m < 6; m++) { Runnable worker = new EmployeeThread("" + m); executor.execute(worker); // ExecutorService की execute विधि को कॉल करना } executor.shutdown(); while (!executor.isTerminated()) { } System.out.println("Finished all the threads"); } }