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