Mam obiekt MyThread, który uruchamiam, gdy moja aplikacja jest ładowana przez serwer, oznaczam ją jako wątek Daemona, a następnie wywołuję na nim kod start()
. Wątek ma służyć do oczekiwania na informacje z kolejki, o ile aplikacja jest aktywna. Mój problem/pytanie brzmi następująco: Obecnie MyThread rozszerza wątek, ponieważ oznaczam go jako demona i czytam o tym, jak bardziej prawdopodobne jest wdrożenie Runnable i użycie Executorów. Tak więc chciałem zapytać, czy MyThread wdroży Runnable zamiast rozszerzenia Thread (i oczywiście zostanie zmieniona nazwa) i użyję newSingleThreadScheduledExecutor()
jak, co lub gdzie, mogę oznaczyć coś jako Daemon. Mam nadzieję, że nie narobiłem bałaganu, proszę wybaczcie, jeśli mam, ponieważ niektóre elementy środowiska wielowątkowego są dla mnie bardzo nowe.Executor i demon w Javie
Dzięki Ittai
Aktualizacja: Moduł mam na myśli w mojej aplikacji jest aplikacja internetowa, która ma kilka wątków rzeczywiście tego rodzaju, a co oni mają wspólnego jest to, że oni w całej ServletContext
jako członek z różnych powodów. Obecnie rozszerzam Thread
na WebThread
, który ma ServletContext
jako memebr i wszystkie podklasy mogą z niego korzystać. Jeśli przejdę do paradygmatu Runnable z Executorem i ThreadFactory niż w zasadzie, potrzebuję mieć brzydką hybrydę WebRunnable
, która implementuje Runnable
i ma ServletContext
jako członka publicznego i ma swój implementację newThread(WebRunnable arg0)
oprócz newThread(Runnable arg0)
. Nie jestem pewien, co jest najlepsze. Dzięki
+1 za poprawność techniczną - ale czy jest jakaś korzyść z używania Executora w tym kontekście? Wydaje się dla mnie trochę "złożoności dla złożoności" (ale może się mylę w tym ...) – hjhill
Być może nie. Ale napisałem systemy, przed których na początku używam jednego executora wątków, i podłączono różne executory na późniejszym etapie. –
@ Brian - Myślę o tym, co myśli hjhill. Mam jeden wątek jako taki i nie jestem pewien, czy warto moich kłopotów z ponownym użyciem ThreadFactory – Ittai