เธรดพูลคือชุดของเธรดที่กำหนดค่าเริ่มต้นล่วงหน้า แผนทั่วไปเบื้องหลังเธรดพูลคือการสร้างเธรดที่หลากหลายเมื่อเริ่มต้นเมธอดและวางไว้ในพูล ไม่ว่าพวกเขาจะนั่งที่ไหนและคาดหวังการทำงาน เมื่อเซิร์ฟเวอร์ได้รับการเรียกร้องให้เข้าร่วม เซิร์ฟเวอร์จะปลุกเธรดจากพูลนี้—ถ้ามี—และส่งคำขอบริการ เมื่อเธรดเสร็จสิ้นการบริการ เธรดจะกลับไปที่พูลและรอการทำงานจำนวนมาก หากพูลไม่มีเธรดที่เข้าถึงได้ เซิร์ฟเวอร์จะรอจนกว่าจะว่าง
ประหยัดเวลาเพราะไม่ต้องสร้างเธรดใหม่
มันถูกใช้ใน Servlet และ JSP ทุกที่ที่เครื่องมือสร้างพูลเธรดเพื่อเมธอดคำขอ
ตัวอย่าง
EmployeeThread.java
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"); } }