2012-11-09 24 views
11

Jakie są plusy i minusy używania ScheduledExecutorService/Timer/Handler? Jak rozumiem w Androidzie zamiast Timer trzeba użyć Handler, ale co z ScheduledExecutorService?ScheduledExecutorService vs Timer vs Handler

Jak rozumiem, Handler i ScheduledExecutorService dotyczy tylko czasu względnego, prawda?

+2

http://stackoverflow.com/questions/2333680/android-schedule-action – assylias

+2

Główna różnica pomiędzy czasowy i ScheduledExecutor: ta ostatnia może używać kilku nici (poprzez basen nici) oraz wyeliminować ryzyko jedno zadanie opóźniania następnego jeden: http://stackoverflow.com/questions/409932/java-timer-vs-executorservice – assylias

+0

To pokazuje dobre wyjaśnienie http://stackoverflow.com/a/6558821/1016544 –

Odpowiedz

3

Wszystkie trzy pozwalają wykonywać zadania na innym (np. Poza głównym) wątku. Numer Handler pozwala na użycie komunikatu przekazującego wzór Actor do bezpiecznego komunikowania się między wątkami. To nie pozwala na robienie/opóźnianie/etc.

A ScheduledExecutorService to bardzo ogólne rozwiązanie do zarządzania wątkami. Inicjujesz go z określoną liczbą wątków roboczych, a następnie nadajesz im jednostki robocze. Możesz opóźnić/czas i powtórzyć jednostki pracy.

Klasa Timer ma proste API, które przypomina usługę ScheduledExecutorService dla jednorazowego użycia w jednym wątku. Oficjalny interfejs API sugeruje, aby nie używać tej klasy, ale zamiast tego używał własnego Zaplanowanego egzaminu.

+2

możesz użyć Handler # postDelayed (Runnable, interwał) – siliconeagle