[Java] Quartz i pule o zmiennej ilości wątków.

Quartz to planista zadań powszechnie wykorzystywany w aplikacjach Java i .NET. Jednym z poważnych ograniczeń w wykorzystaniu Quartza na dużą skalę jest domyślna implementacji puli wątków – org.quartz.simpl.SimpleThreadPool która tworzy podczas inicjalizacji pulę wątków o stały rozmiarze i nigdy nie zwalnia nieużywanych wątków. Takie zachowanie ma sens gdy pula jest bardzo mocno obciążona i wątki są cały czas wykorzystywane, ale w praktyce to rozwiązanie się nie sprawdza – dlaczego mamy utrzymywać 1000 wątków tylko dlatego że są potrzebne raz na tydzień? Ponieważ domyślnie Quartz nie ma odpowiedniej implementacji puli wątków zmuszony byłem napisać własną

Pula ta z jednej strony zapewnia ponowne wykorzystanie wątków gdy system jest obciążony (unikając tym samym kosztów wielokrotnego tworzenia wątków – Why is creating a Thread said to be expensive?) a jednocześnie zwalnia wątki które były nieaktywne przez odpowiednio długi czas unikając tym samym niepotrzebnego wykorzystania pamięci natywnej i PermGen-u.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s