mam zadanie zaplanowane jako takie:Jak rozmiar basenu faktycznie działa z zaplanowanymi zadaniami 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>
Chyba mam nieporozumienie, w jaki sposób zaplanowane zadania pracy z wielkości basenu. Pomimo tego, że rozmiar basenu wynosi 15, wydaje się, że używany jest tylko jeden wątek. Na przykład, jeśli mam piętnaście zdarzeń w kolejce, myślę, że będzie piętnaście wątków sprawdzających co minutę, aby usunąć zdarzenie z kolejki. Oczywiście, to jest złe.
Jak mogę to zrobić, aby piętnaście wątków wywoływał tę metodę dla przedziału czasu z wykorzystaniem abstrakcji programu Spring Spring?
Edycja: Chcę osiągnąć to: co pół sekundy, chcę sprawdzić, czy istnieją oczekujące w kolejce zdarzenia do wysłania. Kiedy to nastąpi, chcę wysłać maksymalnie 15 (jeśli 15 istnieje). W jaki sposób osiągnąć to przy użyciu abstrakcji wiosny dla rzeczy wątku java?
Jeśli mam cztery rdzenie, czy nie powinny istnieć co najmniej cztery wątki? Widzę tylko jeden. Jeśli mam sto zdarzeń w mojej kolejce, kiedy ten harmonogram się uruchamia, czy nie powinienem natychmiast zobaczyć cztery wywołania sendNextQueueEvent, po jednym z każdego wątku? – AHungerArtist
Cztery to maksymalna liczba aktywnych wątków_, które możesz mieć; to nie jest początkowa konfiguracja domyślna. Widzenie wywołań zależy również od różnych rzeczy, takich jak model współbieżności kolejki, której używasz dla zdarzeń oraz szybkość/okres, w którym wykonywane jest zadanie. Mam nadzieję, że to pomoże. – nobeh