Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เธรดพูลใน Java


เธรดพูลคือชุดของเธรดที่กำหนดค่าเริ่มต้นล่วงหน้า แผนทั่วไปเบื้องหลังเธรดพูลคือการสร้างเธรดที่หลากหลายเมื่อเริ่มต้นเมธอดและวางไว้ในพูล ไม่ว่าพวกเขาจะนั่งที่ไหนและคาดหวังการทำงาน เมื่อเซิร์ฟเวอร์ได้รับการเรียกร้องให้เข้าร่วม เซิร์ฟเวอร์จะปลุกเธรดจากพูลนี้—ถ้ามี—และส่งคำขอบริการ เมื่อเธรดเสร็จสิ้นการบริการ เธรดจะกลับไปที่พูลและรอการทำงานจำนวนมาก หากพูลไม่มีเธรดที่เข้าถึงได้ เซิร์ฟเวอร์จะรอจนกว่าจะว่าง

ประหยัดเวลาเพราะไม่ต้องสร้างเธรดใหม่

มันถูกใช้ใน 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");
   }
}