Khi tác vụ mới được gửi theo phương pháp
execute(java.lang.Runnable)
và ít hơncorePoolSize
chủ đề đang chạy, một chuỗi mới được tạo để xử lý yêu cầu, ngay cả khi các chuỗi công việc khác không hoạt động.ThreadPoolExecutor - Core và kích thước hồ bơi tối đa
1) Tại sao cần tạo chuỗi mới để xử lý yêu cầu nếu có chuỗi không hoạt động?
Nếu có nhiều hơn
corePoolSize
nhưng ít hơnmaximumPoolSize
chuỗi đang chạy, một chuỗi mới sẽ chỉ được tạo khi hàng đợi đầy.
2) Tôi không hiểu sự khác biệt giữa corePoolSize
và maximumPoolSize
tại đây. Thứ hai, làm thế nào một hàng đợi có thể đầy khi các luồng nhỏ hơn maximumPoolSize
? Hàng đợi chỉ có thể đầy nếu chủ đề bằng hoặc lớn hơn maximumPoolSize
. Phải không?
1. Làm thế nào để thực hiện() biết rằng đề người lao động khác của bạn là nhàn rỗi? Bạn đã trả lại cho họ trở lại hồ bơi khi bạn đang thực hiện với họ? –
2. Có vẻ như ThreadPoolExecutor đang cố gắng duy trì một nhóm các chủ đề có thể sử dụng lớn hơn corePoolSize nhưng nhỏ hơn maximumPoolSize. –
@RobertHarvey, vui lòng đăng câu trả lời này. – zEro