Tôi có một nhiệm vụ theo lịch trình như vậy:Kích thước nhóm thực sự hoạt động như thế nào với các tác vụ theo lịch của Spring?
<task:scheduler id="notification.scheduler" pool-size="15" />
<task:scheduled-tasks scheduler="notification.scheduler">
<task:scheduled ref="notificationProcessor" method="sendNextQueueEvent" fixed-rate="500" />
<task:scheduled ref="notificationProcessor" method="deleteNextCompletedEvent" fixed-rate="60000" />
</task:scheduled-tasks>
Tôi nghĩ rằng tôi có một sự hiểu lầm về cách sắp xếp công việc làm việc với kích thước hồ bơi. Mặc dù kích thước hồ bơi là 15, có vẻ như chỉ có một sợi đang được sử dụng. Ví dụ, nếu tôi có mười lăm sự kiện trong hàng đợi, tôi sẽ nghĩ rằng sẽ có mười lăm chủ đề kiểm tra từng phút để xóa một sự kiện khỏi hàng đợi. Rõ ràng, điều này là sai.
Tôi làm cách nào để có 15 đề tài gọi phương thức này trong khoảng thời gian bằng cách sử dụng tính trừu tượng của lịch trình của Spring?
Chỉnh sửa: Những gì tôi muốn thực hiện là: Mỗi nửa giây, tôi muốn kiểm tra xem có sự kiện xếp hàng nào được gửi hay không. Khi điều này được thực hiện, tôi muốn gửi tối đa 15 (nếu 15 tồn tại). Làm thế nào tôi sẽ thực hiện điều này bằng cách sử dụng trừu tượng mùa xuân cho các công cụ thread java?
Nếu tôi có bốn lõi, không nên có ít nhất bốn luồng? Tôi chỉ thấy một. Nếu tôi có hàng trăm sự kiện trong hàng đợi của mình, khi trình lập lịch biểu này bắt đầu, tôi có nên thấy ngay bốn lệnh gọi sendNextQueueEvent, một từ mỗi chuỗi không? – AHungerArtist
Bốn là số lượng tối đa các chuỗi _concurrent active_ mà bạn có thể có; nó không phải là thiết lập mặc định ban đầu. Việc xem các cuộc gọi cũng phụ thuộc vào những thứ khác nhau như mô hình đồng thời của hàng đợi bạn sử dụng cho các sự kiện và tốc độ/thời gian mà tác vụ được thực thi. Tôi hi vọng cái này giúp được. – nobeh