Czy istnieje sposób użycia ExecutorService do wstrzymania/wznowienia określonego wątku?Java ExecutorService wstrzymuje/wznawia określony wątek
private static ExecutorService threadpool = Executors.newFixedThreadPool(5);
Wyobraźmy sobie, że chce zatrzymać Wich gwintu jako id = 0 (przy założeniu, że każda z nich jest przypisany identyfikator przyrostowej do wielkości puli wątków osiągnięciu).
Po chwili, naciskając przycisk, powiedzmy, chcę wznowić ten wątek i pozostawić wszystkie pozostałe wątki z ich bieżącym stanem, który można wstrzymać lub wznowić.
Na dokumentacji Java znalazłem niezakończoną wersję PausableThreadPoolExecutor. Ale to nie odpowiada temu, czego potrzebuję, ponieważ wznawia wszystkie wątki w puli.
Jeśli nie ma sposobu, aby to zrobić z domyślną implementacją ExecutorService, czy ktoś może wskazać mi implementację Java dla tego problemu?
Dzięki!
Czy jesteś pewien?Wątek o podanym identyfikatorze wykonuje wybrane losowo zadanie, więc zatrzymujesz nieznaną pracę. Jaki to ma sens? –
Wyobraź sobie następującą sytuację: Masz menedżera pobierania i na tym menedżerze możesz zatrzymać i wznowić pobieranie. Dla każdego, z którego pobierasz dane, nie ma znaczenia, co nie jest istotne, i chcesz zatrzymać pobieranie, aby wznowić je w dowolnym miejscu. Czy to sprawia, że pytanie jest dla ciebie bardziej jasne? –
Bardziej przejrzysty, ale nadal mało sensowny. Zatrzymywanie/wznawianie pobierania dotyczy logiki biznesowej, a wątek dotyczy zasobów obliczeniowych. Kontrolowanie logiki przez dodawanie/usuwanie zasobów to zły pomysł IMHO. –