Piszę aplikację w Javie przy użyciu ThreadPool. Najpierw tworzę nowy ThreadPool:Pula wątków w Javie
private ExecutorService threadExecutor = Executors.newFixedThreadPool(20);
Następnie tworzę niektóre obiekty Runnable. Potem wykonać mojego puli wątków, od czasu do czasu przekazując mu to samo Runnable obiektu:
threadExecutor.execute(serverRunnable);
I wykonanie tej puli wątków, co 20 sekund. Mój problem polega na tym, że threadExecutor przestaje działać przez około 5 minut. Po prostu nie wykonuję Runnable object. Zauważam, że gdy zwiększam argument w:
Executors.newFixedThreadPool(20);
od 20 do np. 100 ThreadPool będzie działać dłużej. Czy ktoś może mi wyjaśnić, dlaczego ThreadPool przestał działać?
Ps. Piszę ten kod w Androidzie
Proszę zaksięgować kod z obiektu 'serverRunnable'. – artbristol
Czy twój Runnable stop poprawnie? Jeśli nigdy nie zakończą swojej metody 'run()', twoja pula zostanie wyczerpana, a 'execute()' zablokuje oczekiwanie na dostęp do jednego gniazda w puli. – Viruzzo
No cóż, używam na przykład serverRunnable. Mijam wiele różnych Runnable do ThreadPoll i wszystkie one się kończą. Niektóre z nich wykonują trywialną pracę, piszą coś w dzienniku. – klemens