एक थ्रेड पूल प्री-इनिशियलाइज़्ड थ्रेड्स का एक संग्रह है। थ्रेड पूल के पीछे सामान्य योजना यह है कि मेथड स्टार्टअप पर विभिन्न प्रकार के थ्रेड्स बनाएं और उन्हें एक पूल में रखें, जहाँ भी वे बैठते हैं और काम की उम्मीद करते हैं। एक बार जब कोई सर्वर भागीदारी के लिए कॉल प्राप्त करता है, तो यह इस पूल से एक धागा जगाता है - यदि कोई उपलब्ध है - और इसे सेवा के लिए अनुरोध भेजता है। एक बार जब धागा अपनी सेवा पूरी कर लेता है, तो वह पूल में लौट आता है और बहुत सारे काम की प्रतीक्षा करता है। यदि पूल में कोई सुलभ थ्रेड नहीं है, तो सर्वर तब तक प्रतीक्षा करता है जब तक कि एक मुक्त नहीं हो जाता।
इससे समय की बचत होती है क्योंकि नया धागा बनाने की कोई आवश्यकता नहीं है।
इसका उपयोग सर्वलेट और जेएसपी में किया जाता है जहां इंस्ट्रुमेंटलिटी अनुरोध को पूरा करने के लिए थ्रेड पूल बनाती है।
उदाहरण
कर्मचारी थ्रेड.जावा
importjava.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();//call processmessage method that sleeps the thread for 2 seconds System.out.println(Thread.currentThread().getName()+" (End)");//prints thread name } 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); //creating a pool of 6 threads for (int m = 0; m< 6; m++) { Runnable worker = new EmployeeThread("" + i); executor.execute(worker); //calling execute method of ExecutorService } executor.shutdown(); while (!executor.isTerminated()) { } System.out.println("Finished all the threads"); } }