Nhu cầu chính đối với các chủ đề theadpool là xử lý các nhiệm vụ nhỏ ngắn dự kiến sẽ hoàn thành gần như ngay lập tức. Trình xử lý ngắt phần cứng thường chạy trong ngữ cảnh xếp chồng không phù hợp với mã không phải kernel, nhưng trình xử lý ngắt phần cứng có thể phát hiện ra rằng gọi lại hoàn thành I / O ở chế độ người dùng nên được chạy càng sớm càng tốt. Tạo một chủ đề mới cho mục đích chạy một thứ như vậy sẽ là quá mức cần thiết. Có một vài luồng được tạo trước có thể được gửi để chạy các cuộc gọi lại hoàn thành I / O hoặc những thứ tương tự khác sẽ hiệu quả hơn nhiều.
Một khía cạnh quan trọng của các luồng như vậy là nếu các phương thức hoàn thành I / O luôn hoàn thành về cơ bản tức thời và không bao giờ chặn, và số lượng các luồng đó hiện đang chạy các phương thức đó ít nhất bằng với số lượng bộ xử lý, cách duy nhất bất kỳ luồng nào khác có thể chạy trước khi một trong các phương thức đã nói ở trên kết thúc nếu một trong các phương thức khác chặn hoặc thời gian thực hiện của nó vượt quá một lát cắt thời gian luồng thông thường; không ai trong số đó sẽ xảy ra rất thường xuyên nếu nhóm luồng được sử dụng như dự định.
Nếu một phương thức không thể được dự kiến sẽ thoát trong vòng 100ms hoặc lâu hơn khi nó bắt đầu thực thi, thì phương thức sẽ được thực thi thông qua một số phương tiện khác ngoài nhóm luồng chính. Nếu một công việc có nhiều nhiệm vụ phải thực hiện chuyên sâu về CPU nhưng sẽ không chặn, thì có thể hữu ích khi gửi chúng bằng cách sử dụng một nhóm các luồng ứng dụng (một cho mỗi lõi CPU) tách biệt với luồng xử lý "chính", kể từ khi sử dụng nhiều luồng hơn lõi sẽ phản tác dụng khi chạy các tác vụ không cần CPU. Tuy nhiên, nếu một phương thức sẽ mất một giây hoặc lâu hơn để thực thi và sẽ dành phần lớn thời gian bị chặn, thì phương thức đó có thể sẽ được chạy trong một luồng chuyên dụng và gần như chắc chắn không nên chạy trong một luồng chính. Nếu một hoạt động chạy dài cần được kích hoạt bởi một cái gì đó như gọi lại I / O,