Nhóm luồng là một tập hợp các luồng được khởi tạo trước. Kế hoạch chung đằng sau một nhóm luồng là tạo ra nhiều luồng khi khởi động phương thức và đặt chúng vào một nhóm, bất cứ nơi nào họ ngồi và mong đợi công việc. khi một máy chủ nhận được lời kêu gọi tham gia, nó sẽ đánh thức một chuỗi từ nhóm này — nếu một luồng khả dụng — và chuyển nó yêu cầu dịch vụ. Khi luồng hoàn thành dịch vụ của nó, nó sẽ trở lại nhóm và chờ rất nhiều công việc. Nếu nhóm chứa không có chuỗi nào có thể truy cập được, máy chủ sẽ đợi cho đến khi một chuỗi rảnh.
Nó tiết kiệm thời gian do không cần tạo luồng mới.
Nó được sử dụng trong Servlet và JSP ở bất cứ nơi nào mà thiết bị tạo ra một nhóm luồng để xử lý yêu cầu.
Ví dụ
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(); } } }
Ví dụThreadPool.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"); } }